我目前正试图让我的代码部分用来比较用户选择哪个按钮。此刻它会自动显示其他的Test2。
Object usersChoice;
Object[] options = { "Go on a journey!", "Exit, i'm tired." };
usersChoice = JOptionPane.showOptionDialog(null, "Hello Melissa :)", "Sunshine program",
JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, options, options[0]);
if(usersChoice == options )
{
JOptionPane.showMessageDialog(null, "Test1");
} else {
JOptionPane.showMessageDialog(null, "Test2");
}
答案 0 :(得分:3)
问题出在这个代码上(为了清楚起见,我移动了usersChoice
的声明):
Object[] options = [...]
Object usersChoice = JOptionPane.showOptionDialog([...])
方法JOptionPane.showOptionDialog()
返回一个int。由于这是一个原语,它会被自动装箱到Integer
。
现在你有了这段代码:
if(usersChoice == options )
您正在将Object[]
与Object
(更具体地说是Integer
)进行比较。这将永远是错误的,因为它们是不同的类型。
还要记住,在Java中,使用==
检查基元上的相等性,但Object
比较这种方式将通过它们的内存位置进行比较。请使用.equals()
来比较Object
s。