首页 > 解决方案 > 在for循环java中测试字符串数组

问题描述

我刚刚学习了 Java 的基础知识,并且正在尝试制作一个简单的登录程序,该程序可以从字符串数组中测试用户和密码,但是当事件触发时,什么也没发生,按钮就卡住了。

private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {
    //List of user and pass as an array
    final String[] userlist = {"admin","test","lol","user"};
    final String[] passlist = {"123","test","lol","user"};

    //testing if correct
    for(int i = 0; i > 5;i++){
    if (userbox.getText().equals(userlist[i]) & passbox.getText().equals(passlist[i])){
      //pops up a new panel if success
      JOptionPane.showMessageDialog(rootPane, "Success");
      new InputOutput().setVisible(true);
      this.hide();
    }else{
      //pops up a message if its wrong
      JOptionPane.showMessageDialog(rootPane, "Wrong Try again!");
    }
}

标签: javaswing

解决方案


首先,你的 for 循环中的条件,即i > 5,是不正确的,因为它永远不会满足,因为从i开始0。此外,最好使用用户名数组的实际长度,即userlist.length, 作为条件,因为当您编辑代码时它可能会发生变化。

其次,在检查输入是否正确的 if 语句中,您使用按位与&而不是逻辑与&&,这可能是偶然的,因为目标是检查用户名和密码是否正确。

这是您的这部分代码的一个版本,我在其中编辑了错误:

for(int i = 0; i < userlist.length; i++) {
if(userbox.getText().equals(userlist[i]) && passbox.getText().equals(passlist[i])) {
    // Success
} else {
    // Failure
}

推荐阅读