2013-10-25 2 views
0

Я застрял в проблеме с приращением счетчика. Я не уверен, что я делаю неправильно. Извините, если это ошибка начинающего, но я не нашел решение, в котором я еще не понял или еще не понял.Счетчик Java, не считая

public static int duplicates(String[] text, int numWords){ 
      int currentCount = 1; 
      for (int i=0; i<numWords-1; i++){ 
       for (int j=i+1; j<numWords; j++){ 
        if (text[i] == text[j]){ 
         currentCount++; 

        } 
       } 
      } 

      return currentCount; 
     } 

ответ

0
if (text[i] == text[j]) 

Ваша ошибка в строке выше.

В Java вы не должны использовать оператор == для сравнения строк. Это проверит, являются ли 2 строки одним и тем же объектом (сравнение идентичности), но вы хотите проверить, имеют ли они один и тот же контент (сравнение значений).

Вместо этого вы должны использовать text[i].equals(text[j]).

Если ваш метод должен обрабатывать null значения в массиве (т.е. text[i] может быть пустым), то вам нужно будет проверить на нуль перед вызовом equals.

0

заменить if (text[i] == text[j]){ на if (text[i].equals(text[j])){

использовать этот способ

public static int duplicates(String[] text, int numWords){ 
      int currentCount = 1; 
      for (int i=0; i<numWords-1; i++){ 
       for (int j=i+1; j<numWords; j++){ 
        if (text[i].equals(text[j])){ 
         currentCount++; 

        } 
       } 
      } 

      return currentCount; 
     } 
0

При сравнении значений строки, используйте метод Equals.

if (text[i].equals(text[j])) { 
1

Для сравнения объектов в Java использует .equals() метод вместо «==» оператор

if (text[i] == text[j]) необходимости изменения в if (text[i].equals(text[j]))

, если вы хотите игнорировать использование случая .equalsIgnoreCase() вместо .equals()

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