线性搜索数组检查值



我需要获得输入来填充数组。我的问题是,我还需要检查我输入的值是否已经存在于数组中。如果存在,我需要显示一条信息,上面写着糟糕的成绩。我相信我陷入了搜索循环,我无法将值分配给数组If。

String[] course = new String[9];
int index = 0;
if (menu == 1) {
    boolean found = true;
    do {
        value = (JOptionPane.showInputDialog("Enter course " + (index + 1)));
        int pos = 0;
        while (pos< course.length&& !found) {
            if (value == course[index]) {
                found = true;  
            } else {
                pos++;
            }      
        } // while
        if(found == true) {
           course[index] = value;
        } else {
           course[index]="";
        }
        if (course[index].equals("")) {
            JOptionPane.showMessageDialog(null, "Bad Course Name");
        } else{
            course[index] = (JOptionPane.showInputDialog("Enter course " + (index + 1)));
        }
    } while(course[index].equals("")); //last
}

实现的问题是,一旦found设置为true,就永远不会将其重置回false:这是一条单行道。这就是为什么输入第一个重复值会阻止输入其他非重复值的原因。

可以通过在do/while循环中移动found的声明/初始化来解决此问题。然而,更好的方法是定义一个助手方法,该方法在数组中搜索到特定位置,如果发现重复,则返回true

private static boolean isDuplicate(String[] course, int maxIndex, String entry) {
    ...
}

现在,搜索重复项的循环将被隐藏,同时还有指示结果的变量。代码也变得更具可读性,因为方法的名称告诉读者内部发生了什么。

当然,您需要修复字符串比较:您的代码使用==,这是,而不是Java中的

最新更新