对字符串和冒泡排序使用charAt()方法

我试图对字符串进行冒泡排序,我收到以下错误:

MyClass.java:13: error: unexpected type str1.charAt(i + 1) = str1.charAt(i); ^ required: variable found: value 1 error 

来自以下代码:

 public class MyClass { public static boolean checkPermutation(String str1, String str2){ char temp; if(str1.length() != str2.length()){ return false; } else{ for(int i = 0; i  str1.charAt(i + 1)){ temp = str1.charAt(i + 1); str1.charAt(i + 1) = str1.charAt(i); //str1.charAt(i) = temp; } } return true; } } public static void main(String[] args){ if(checkPermutation("heello", "helelo")){ System.out.println("comparing strings work!"); } } } 

有关如何解决此问题的任何想法?

String是一个不可变类型,您不能分配给字符串的字符,在这种特殊情况下,您不能将方法用作赋值运算符的左侧。

 str.charAt(..) = 

没有意义,因为您无法分配从Java中的方法返回的值。 这可以在其他语言中工作,例如C ++,你可以从一个方法中返回一个char&一个char& ,但是在Java中你总会找到类似void setCharAt(int index, char value) (它不存在,它只是为了解释问题)。

确实检查错误:

required:变量,found:value

您试图分配一个非法的值,您必须分配给一个变量。

只需将String转换为char[]

 char[] data = str.toCharArray(); data[i+1] = data[i]; 

这样你就可以自由地做你需要的了。