java - IF 语句在 for 循环中不能很好地工作

标签 java

在下面的代码中,我想让用户在搜索框中输入可用的学生 ID 之一,然后如果学生 ID 有效,将出现一个简单的消息框,其中包含可用的学生 ID。

情况 1:当我在搜索框中输入 212 时效果很好。

情况2:当我输入215或219或214(不是212)时,它会跳转到“未找到”消息框,再尝试两次后,我会收到一个包含已找到学生ID的消息框。

问题为什么我第一次输入215或219或214时找不到消息框,但输入212时却可以正常工作?这个 for 循环或 IF 语句有什么问题?为什么当我输入215时,它会忽略第一次和第二次然后显示找到的消息框?

import javax.swing.*;
static int[] studentID = {212,214,215,219};

public static void main(String[] args) {
    search();

    System.exit(0);

}

public static void search(){
    for(int i = 0;i < studentID.length;i++){
        search = JOptionPane.showInputDialog(null,"Enter a student ID");
        if(studentID[i] == Integer.parseInt(search)){
            JOptionPane.showMessageDialog(null, studentID[i]);
            break;
        }else{
            JOptionPane.showMessageDialog(null,"NOT FOUND!!!");
        }
    }
}

最佳答案

循环应该在读取输入之后,并且“NOT FOUND”消息应该在循环之后:

public static void search(){
    search = JOptionPane.showInputDialog(null,"Enter a student ID");
    for(int i = 0;i < studentID.length;i++){
        if(studentID[i] == Integer.parseInt(search)){
            JOptionPane.showMessageDialog(null, studentID[i]);
            return;
        }
    }
    OptionPane.showMessageDialog(null,"NOT FOUND!!!");
}

如果要执行多次搜索,则应多次调用 search() 方法。

关于java - IF 语句在 for 循环中不能很好地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58426508/

相关文章:

java - Jackson 忽略层次结构嵌套类中的 @JsonIgnore 注释

java - 是否可以自定义 JTree 节点?

java - 如何将属性值与字符串进行比较

java - Cloud Firestore 单元测试 Java

java - Java 中的对象分组

java - 将数据发送到父 Activity

java - NoClassDefFoundError 仅适用于 EAR 中的特定类

java - Jasper 报告 - 如何更改 xpath 执行器工厂

java - 在 Intent 中发送信息并使用 FLAG_ACTIVITY_CLEAR_TOP

java - 应用 do while 循环