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