有人可以告诉我这段代码的错误吗?我的问题是如果输入在数组中则显示“Found”,如果输入不在数组中,则显示“Not Found”。为什么我只能为我输入的内容显示“找到”?
String [] deptName = {"Accounting", "Human Resources","Sales"};
//input
String key = JOptionPane.showInputDialog("Enter a department: ");
for(int i=0; i<deptName.length; i++)
{
if(deptName [i] == key);
}
System.out.println("Found");
修改
我修改了这样的代码,我怎么能不让它显示3次?
String [] deptName = {"Accounting", "Human Resources","Sales"};
//input
String key = JOptionPane.showInputDialog("Enter a department: ");
for(int i=0; i<deptName.length; i++)
{
if(deptName [i].equals(key))
JOptionPane.showMessageDialog(null, "Found");
else
JOptionPane.showMessageDialog(null, "Not Found");
}
答案 0 :(得分:3)
“found”总是被打印出来,因为它不在for循环中。而你的支票(也有问题)实际上什么都没有
试
your For loop {
if(deptName [i].equals( key)){
System.out.println("Found");
break;
}
}
答案 1 :(得分:2)
如果在java中对Object使用==,则只检查对象是否是完全相同的对象。要比较对象的内容,您应该使用equals()。
对于String类,equals()比较实际的String内容。
deptName[i].equals(key); //returns true if text is the same
答案 2 :(得分:1)
这样做
for(int i=0;i<deptName.length;i++){
if(key.equals(deptName[i]){
JOptionPane.showMessageDialog(null,"Found"); break;
}}
if(i==deptName.length)
{JOptionPane.showMessageDialog(null,"Not Found");}
答案 3 :(得分:0)
您有几个问题,首先需要致电equals()
并且不得终止if with';'
for(int i=0; i<deptName.length; i++) {
if(deptName [i].equals( key )) {
System.out.println("Found");
}
}
会像预期的那样工作。
答案 4 :(得分:0)
int i=0 ;
for(; i<deptName.length; i++) {
if(key.equals(deptName[i])) break;
}
if( i < deptName.length) {
// found
} else {
// not found
}
答案 5 :(得分:0)
拧紧循环。
JOptionPane.showMessageDialog(null,Arrays.asList(deptName).contains(key) ? "Found" : "Not Found");
我知道这可能是一项编程工作,所以在这里你......
for(int i=0;i<deptName.length;i++){
if(key.equals(deptName[i])
break;
}
if(i==deptName.length)
JOptionPane.showMessageDialog(null,"Not Found");
else
JOptionPane.showMessageDialog(null,"Found at " + i);