Java 为什么在循环中使用“str.charAt(I)=str.charAt(I+1)”时出错
str.charAtj返回一个值。例如,角色a 这相当于写下以下内容: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
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));