2015-11-18 2 views
1

У меня есть простая функция внутри класса, которая проверяет, равны ли две строки (это для игры в палач). Код прост, с двумя переменными класса:равняется со строками, производит неправильные результаты

private String hiddenWord; 
    private String dashWord; 



public void compareGuessWord(String clientGuess) { 
     if (clientGuess.length() > 1) { 
       System.out.println("Kollar om dashord: " + dashWord); 
       System.out.println("Kollar om hidden: " + this.hiddenWord); 
       System.out.println("Kollar om guess:" + clientGuess); 

      if (clientGuess.equalsIgnoreCase(this.hiddenWord)); 
      { 
       this.dashWord = clientGuess; 
      } 
       System.out.println("SECOND Kollar om guess:" + clientGuess); 
       System.out.println("SECOND Kollar om dashord: " + dashWord); 
       System.out.println("SECOND Kollar om hidden: " + hiddenWord); 
     } 
    } 

Вот консольный вывод, который вы можете видеть, что это работает, если внутренний, даже если они не матч. problem

+1

Возможной дубликаты [Точка с запятой на концах, если-заявление и функции в C] (http://stackoverflow.com/questions/846804/semicolon-at-the-ends-of-if-statements-and-functions-in-c) – thegauravmahawar

ответ

10

if (clientGuess.equalsIgnoreCase(this.hiddenWord)); Ваш if выполняет только проверку. Удалите из него ;.

3

В вашем условии if есть ';' так что если не работает

if (clientGuess.equalsIgnoreCase(this.hiddenWord))**;** 
      { 
       this.dashWord = clientGuess; 
      } 

Компилятор считает это нормальным утверждением, поэтому удалите точку с запятой ";" и проверить

2

вашего Если заявление становится прекращено, как вы поставили точку с запятой в конце

if (clientGuess.equalsIgnoreCase(this.hiddenWord)); 

удалить точку с запятой, и он будет работать нормально