我有一个名为updatedDisplay的字符串,该字符串在构造函数中设置为空。
button []是JButtons,alarmCode是String字段。

我希望用户按下四个按钮(它们应该串联起来并存储在updatedDisplay字段中)。

执行checkCode()方法以尝试将updatedDisplay与alarmCode进行匹配。麻烦的是,它们永远都不匹配。我最初以如下方式声明updatedDisplay时,可能与“空格”有关:

私有字符串UpdatedDisplay =“”;

UpdatedDisplay字段似乎没有存储e.getActionCommand()值。

//add actionListeners to each button (except the "clear" button) to display value on screen
for (int i = 0; i< (buttons.length -1); i++) {
  buttons[i].addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e)
          {
          //store the name of the button in a local variable
          String command = e.getActionCommand();

          System.out.println("You clicked " + command);

          updatedDisplay = updatedDisplay + command;
          //updatedDisplay = command;
          System.out.println (updatedDisplay);

          screen.setText(updatedDisplay);
}
     });}


我有一个armButton,按下该按钮时应触发checkCode()方法。该方法检查updatedDisplay和alarmCode是否相等:

//add actionListener to the arm button
armButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
         checkCode();
        }
    });


checkCode():

public void checkCode() {
//check if user entered the correct code
if (updatedDisplay == alarmCode)
{
  updatedDisplay =  "System Armed!";
  screen.setText(updatedDisplay);
}
else
{
  updatedDisplay  = "Incorrect Code, Try again!";
  screen.setText(updatedDisplay);
}
}


即使当我将按钮按下输出到终端窗口时,它们看起来也正确-但是正如我所说,我怀疑开始时正在输入“空格”。

有任何想法吗?

最佳答案



尝试:

if( updatedDisplay.equals( alarmCode ) { // ...


比较方式

要了解这一点,请阅读:

http://leepoint.net/notes-java/data/expressions/22compareobjects.html

摘要

由于updatedDatealarmCode是对象引用,因此必须要求对象比较它们的值。您可以将它们视为指针,其值是内存中包含字符串的位置。而不是比较指针(引用)的值,而是要比较从该内存位置开始的文本。

09-08 06:24