-1

我正在开发一个验证 id 和密码的程序,我认为我在验证时遇到了无限循环。当我单击登录按钮时,没有任何反应。我是 Java 新手,还不知道要寻找什么来解决这个问题。

代码如下:

public void actionPerformed(ActionEvent e) {
    success = false;

    // Sequential search
    int i = 0;

    while (i < validID.length) {
        ;
    }

    {
        if (idField.getText().compareTo(validID[i]) == 0) {
            if (passwordField.getText().compareTo(validPassword[i]) == 0) {
                success = true;
            }
        }
        i = i + 1;
    }

    if (success == true) {
        headerLabel.setText("Login successful");
        idField.setText("");
        passwordField.setText("");
        idField.requestFocus();
    } else {
        headerLabel.setText("Unsuccessful. Try Again");
        idField.setText("");
        passwordField.setText("");
        idField.requestFocus();
    }
    repaint();
}
4

2 回答 2

1

这个块的目的是什么?

while (i < validID.length) {
    ;
}

如果validID.length大于i(很可能是),则该循环将永远不会终止。

似乎您想删除多余的大括号(和分号;必须删除)以使该块有意义。看起来是这样的:

while (i < validID.length) {
    if (idField.getText().compareTo(validID[i]) == 0)  {
        if (passwordField.getText().compareTo(validPassword[i]) == 0) {
            success = true;
        }
    }
    i = i + 1;
}
于 2013-07-23T03:46:49.847 回答
0
int i = 0;

while (i < validID.length) {
    ;
}

validID.length如果大于零,这显然是一个无限循环。

于 2013-07-23T03:48:55.757 回答