我正在尝试对字符串进行冒泡排序,我收到以下错误:
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.length() - 1; i++){
if(str1.charAt(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!");
}
}
}
有关如何解决这个问题的想法吗?
答案 0 :(得分:2)
String
是一个不可变类型,您不能分配给字符串的字符,在这种特殊情况下,您不能将方法用作赋值运算符的左侧。
str.charAt(..) =
没有任何意义,因为您无法分配从Java中的方法返回的值。这可以在其他语言中工作,例如C ++,您可以从方法中返回char&
,但在Java中,您总会找到像void setCharAt(int index, char value)
这样的东西(它不存在,它只是为了解释问题)。
确实检查错误:
必需:变量,找到:值
您正在尝试分配一个非法的值,您必须分配给变量。
只需将String
转换为char[]
至
char[] data = str.toCharArray();
data[i+1] = data[i];
这样你就可以自由地做你需要的了。