2

私が何をしても、ユーザーがコンソールで 1 を入力したときに、このコードが true と評価されることはありません...なぜ false と評価されるのか混乱しています..どんな助けも大歓迎です。

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();

        }
    }
}
4

3 に答える 3

8

である必要があり"1".equals(GameSelection)==オブジェクトの参照をequals比較し、コンテンツを比較します。

また、Java の命名規則では、変数名を小文字で開始します。(例:gameSelectionなどplayHex)

于 2012-05-05T22:12:17.407 に答える
4

必要なもの:

if(GameSelection.equals("1"))

それ以外の:

if(GameSelection == "1")

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

于 2012-05-05T22:12:45.823 に答える
3

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

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

if(GameSelection.equals("1"))
{
   PlayHex.Play();
}
于 2012-05-05T22:12:21.713 に答える