2012-05-05 9 views
2

私が何をしても、ユーザーがコンソールで1を入力すると、このコードは評価されません...なぜ、それがfalseに評価されているのか混乱しています。 。 equalsは、コンテンツを比較しながらJava条件付きの問題

import java.io.*; 
public class Default 
{ 
    public static void main(String [] args) 
    { 
     System.out.println("Welcome to the CS conversation game\n"); 
     System.out.println("Choose your game\n1)Hex to Decimal\n2)Binary to Decimal"); 
     Hex2Decimal PlayHex = new Hex2Decimal(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String GameSelection = null; 
     try 
     { 
      GameSelection = br.readLine(); 
     } 
     catch (IOException ex) 
     { 
      ex.printStackTrace(); 
     } 
     if(GameSelection == "1") 
     { 
      PlayHex.Play(); 

     } 
    } 
} 

答えて

8

"1".equals(GameSelection)であるべき、==は、オブジェクトの参照を比較します。

また、Javaの命名規則では、変数名を小文字で開始することがあります。 (例えば、gameSelection,playHexなど)

+1

+1の余分なチップの場合: –

+2

+1の ".equals"とヌルポインタ例外からの保護。 –

+1

ありがとうございます!これは私の問題を解決した – user1377384

3

Javaに演算子のオーバーロードがありません。

.equals(...)を使用する必要があります。それ以外の場合は、参照アドレスを比較しています。

if(GameSelection.equals("1")) 
{ 
    PlayHex.Play(); 
} 
4

あなたが必要:

if(GameSelection.equals("1")) 

の代わり:equals()かどうかをチェックしながら、

if(GameSelection == "1") 

==は、2つの参照がメモリ内の同じオブジェクトを参照するかどうかをチェックするために使用されています2つの参照はメモリ内の同じオブジェクトを参照していますOR 2つの異なるオブジェクトが同じ値(2文字列sは同等です)。

+0

ありがとうございます! :)) – user1377384

関連する問題