2015-08-06 2 views
0

Я пытаюсь сделать пузырьковую сортировку на шнурке, и я получаю следующее сообщение об ошибке:Использование метода Шара() на веревочке и пузырьковой сортировки

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

Что вы здесь делаете? Str1.charAt (i + 1) = str1.charAt (i); '? Не могли бы вы описать этот код? Как вы думаете, 'charAt' возвращает: переменная или значение? – Pshemo

ответ

2

String - неизменный тип, вы не можете назначать символы строки, и в этом конкретном случае вы не можете использовать метод как левую сторону оператора присваивания.

str.charAt(..) = 

не имеет смысла, поскольку вы не можете назначить значение, возвращаемое методом Java. Это будет работать на других языках, например C++, где вы можете вернуть char& из метода, но в Java вы всегда найдете что-то вроде void setCharAt(int index, char value) (которого не существует, это просто объяснение проблемы).

Действительно проверить ошибку:

required: variable, found: value

Вы пытаетесь присвоить значение, которое является незаконным, вы должны присвоить переменной.

Просто преобразовать String в char[] через

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

так что вы свободны делать то, что вам нужно.

+0

Большое вам спасибо за ваш ответ. Одна вещь, хотя, что вы имеете в виду, когда говорите, что я пытаюсь присвоить ценность? Не является ли str1.charAt [i + 1] переменной? Думаю, вы сказали бы, что str1.charAt [i + 1] - значение. Не могли бы вы объяснить, почему это так? – aejhyun

+2

'charAt (i + 1)' возвращает значение типа 'char', поэтому вы пытаетесь присвоить то, что уже является значением, например,' int foo() {return 5; } '' foo() = 10; ' – Jack

+0

Благодарим вас за объяснение. Супер ясно и прямо к делу. Спасибо :) – aejhyun

Смежные вопросы