Java 为什么在循环中使用“str.charAt(I)=str.charAt(I+1)”时出错

Java 为什么在循环中使用“str.charAt(I)=str.charAt(I+1)”时出错,java,Java,str.charAtj返回一个值。例如,角色a 这相当于写下以下内容: import java.io.*; import java.util.Scanner; class GFG { public static void main (String[] args) { String str; Scanner sc = new Scanner(System.in); str = sc.nextLine(); for(int

str.charAtj返回一个值。例如,角色a

这相当于写下以下内容:

import java.io.*;
import java.util.Scanner;

class GFG {
    public static void main (String[] args) {
        String str;
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();

        for(int i=0; i<str.length();)
        {
            if(str.charAt(i)==str.charAt(i+1))
            {
                for(int j=i;j<str.length();j++)
                    str.charAt(j)=str.charAt(j+1); //Here the error occurs
            }
            else
            {
                i++;
            }
        }
        System.out.println(str);
    }
}
相反,您希望指定替换字符串str的一个字符

这里有一种方法可以实现这一点,即将字符串转换为字符数组

"a" = str.charAt(j+1); // Doesn't work
或者,您可以使用StringBuilder

char[] strCharArray= str.toCharArray();
strCharArray[j] = str.charAt(j+1)

您正在使用getter设置一个值

使用类似以下内容:

StringBuilder str = new StringBuilder();
str.setCharAt(j, str.charAt(j+1));

无法分配给函数调用。字符串也是不可变的。也许您可以使用StringBuilder和方法。在不知道您要做什么的情况下很难说。您希望这段代码具体做什么?老实说,这完全是一团糟。我想你是在试着比较这两者。请参阅==&=Operator之间的差异另一个问题是,他的str.charAtj+1和str.charAti+1都将始终遇到StringIndexOutOfBoundsException,因此此操作仍然不会运行。字符串是不可变的,没有setCharAt。
str.setCharAt(j, str.charAt(j+1));