为什么不说我赢了?

时间:2012-11-08 04:50:39

标签: java swing if-statement jbutton

这是我的if语句...... 按钮显示如下:

enter code here
这是我的if语句

        if((buttons[3].getName()=="x" && buttons[6].getName()=="x" &&
        buttons[9].getText()=="x")||(buttons[2].getName()=="x" &&
        buttons[5].getName()=="x" && buttons[8].getName()=="x")||
        ((buttons[1].getName()=="x") && (buttons[4].getName()=="x") &&
        (buttons[7].getName()=="x"))){
            JOptionPane.showMessageDialog(null,"X Wins");
        }

因此,如果我选择第1,第4和第7个按钮(最左边3个按钮),为什么不说“X Wins”? 作为旁注,是按钮应该具有名称“x”

4 个答案:

答案 0 :(得分:3)

buttons[3].getName()=="x" 

字符串比较应使用equals()而不是==

应为buttons[3].getName().equals("x")

答案 1 :(得分:2)

使用Objects比较java中的

- "equals""=="用于比较原始值,还用于检查2个或更多对象引用变量是否指向heap上的同一个对象

- 因此,应使用String并使用.equals()来比较java中的.equalsIgnoreCase() 作为对象

示例:

buttons[1].getName().equals("x");

答案 2 :(得分:1)

字符串之间的比较使用equals()。

button[1].getName().equals("x");

另外,你确保左边的3是1,4和7而不是0,3和6,对吧?

答案 3 :(得分:1)

重新检查你的if条件。它太长了。与AND和OR混合在一起。 它可能会产生意想不到的结果。

也可以使用equals()或equalsIgnoreCase()