2

无论我做什么,当用户在控制台输入 1 时,这段代码永远不会评估为真......我很困惑为什么它评估为假......非常感谢任何帮助。

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 命名约定是以小写开头的变量名。(例如gameSelectionplayHex等等)

于 2012-05-05T22:12:17.407 回答
4

你需要:

if(GameSelection.equals("1"))

代替:

if(GameSelection == "1")

==用于检查 2 个引用是否引用内存中的同一对象,同时equals()检查 2 个引用是否引用内存中的同一对象2 个不同但具有相同值的对象(这 2 个字符串是等价的)。

于 2012-05-05T22:12:45.823 回答
3

Java 没有运算符重载。

您将不得不使用.equals(...). 否则,您正在比较参考地址。

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