Java条件问题

Java条件问题,java,debugging,conditional,conditional-statements,Java,Debugging,Conditional,Conditional Statements,无论我做什么,当用户在控制台输入1时,这段代码永远不会计算为true。。。我不明白为什么它的评估结果是错误的。。非常感谢您的帮助 import java.io.*; public class Default { public static void main(String [] args) { System.out.println("Welcome to the CS conversation game\n"); System.out.print

无论我做什么,当用户在控制台输入1时,这段代码永远不会计算为true。。。我不明白为什么它的评估结果是错误的。。非常感谢您的帮助

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

        }
    }
}
应该是
“1”。等于(游戏选择)
==
比较对象的引用,而
等于
比较内容


此外,Java命名约定是以小写形式开始变量名。(例如,
gameSelection
playHex
等)

Java没有运算符重载

您必须使用
.equals(…)
。否则,您将比较引用地址

if(GameSelection.equals("1"))
{
   PlayHex.Play();
}
你需要:

if(GameSelection.equals("1"))
而不是:

if(GameSelection == "1")

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

+1表示
“1”.equals
并防止空指针异常。@阿米尔,老实说,我不知道我是否希望这样。如果将null传递到不应该包含它的方法中,则需要异常。否则,您的代码可能会默默地失败,而您可能不知道。@user1377384如果他解决了您的问题,您给Binyamin一点爱,然后单击左侧的“接受答案”复选标记怎么样?@corsiKa-我想这是风格的问题,我不是这种风格的粉丝,但它在某些情况下很方便。@AmirRaminfar我从来不知道.equals()实际上检查空值。今天学到了新东西:)