2015-06-15 98 views
-4

我有一個簡單的java代碼總是返回"Game over."Java如果其他工作不正常

import java.util.Scanner; 
public class nextQuestion { 
    public void newQuestion() { 
     Scanner choice2 = new Scanner(System.in); 
     System.out.println("What is my name?"); 
     System.out.println("A. Mark"); 
     System.out.println("B. Robert"); 
     System.out.println("C. Mio"); 
     System.out.println("D. Samantha"); 
     String answer2 = choice2.nextLine(); 
     if(answer2 == "a" || answer2 == "A") { 
      System.out.println("Game over."); 
      System.exit(0); 
     } else if(answer2 == "b" || answer2 == "B") { 
      System.out.println("Nice guess!"); 
      System.exit(0); 
     } else if(answer2 == "c" || answer2 == "C") { 
      System.out.println("Game over."); 
      System.exit(0); 
     } else if(answer2 == "d" || answer2 == "D") { 
      System.out.println("Game over."); 
      System.exit(0); 
     } else { 
      System.out.println("Game over."); 
      System.exit(0); 
     } 
    } 
} 

但是,如果我使用switch語句,它確實有效。這有什麼問題?

+0

Java的if/else工作;只是你做錯了事。 – fge

+0

您錯誤地比較了字符串。你應該使用String類的equals()方法。 – Sudheer

回答

2

不要使用"=="比較字符串是不可行的,你應該使用 if answer2.equals("a") ==測試參考平等。 .equals()測試值相等。 因此,如果你真的想測試兩個字符串是否有相同的值,你應該使用.equals()。但是,有幾種情況可以保證由於字符串內聯而具有相同值的兩個字符串將由同一對象表示。這些情況由Java語言規範指定。 ==用於測試兩個字符串是否是相同的對象