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

时间:2015-08-06 23:58:55

标签: java

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

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!"); 
        }
    }
}

有关如何解决这个问题的想法吗?

1 个答案:

答案 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];

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