-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 に答える