验证登录时的无限循环

时间:2013-07-23 03:40:10

标签: java infinite-loop

我正在开发一个验证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();
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

int i = 0;

while (i < validID.length) {
    ;
}

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