我在Java中的条件有问题

时间:2011-02-18 17:25:12

标签: java swing

好日子......

我在我的地址簿程序中搜索我的条目时出现问题...我已经搜索过它们了...但是我在显示“未找到名称”时遇到问题。如果名称尚未保存在我的地址簿中,则会显示该消息。你能帮我弄清楚这有什么问题......

public void searchEntry() {

    int notfound = 0;
    SName = JOptionPane.showInputDialog("Enter Name to find: ");
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            JOptionPane.showMessageDialog(null, entry[i].getInfo2());
        }else{
            notfound++;
        }

        if (notfound != 0){
            JOptionPane.showMessageDialog(null, "Name Not Found!");
        }
    }
}

你能帮我看一下“名字未找到”msg ... thnx提前

3 个答案:

答案 0 :(得分:3)

移动这个:

if (notfound != 0){
  JOptionPane.showMessageDialog(null, "Name Not Found!");
}

在你的for循环之外。

我也刚刚意识到你可能会为每一个人出现这个,因为即使没有找到它,你也会触发它。尝试这样的事情:

SName = JOptionPane.showInputDialog("Enter Name to find: ");
boolean found = false;
Object info;
for (int i = 0; i < counter; i++) {
  if (entry[i].getName().equals(SName)) {
    found = true;
    info = entry[i].getInfo2();
    break;
  }
}
if (found){
    JOptionPane.showMessageDialog(null, info);
}else{
  JOptionPane.showMessageDialog(null, "Name Not Found!");
}

答案 1 :(得分:1)

public void searchEntry() {
    boolean isFind = false;
    SName = JOptionPane.showInputDialog("Enter Name to find: ");
    for (int i = 0; i < counter; i++) {
        if (SName.equals(entry[i].getName())) {
            JOptionPane.showMessageDialog(null, entry[i].getInfo2());
            isFind  = true;
            break; // TODO: I think if you find name you should leave loop.
        }
    }
if (isFind){
    JOptionPane.showMessageDialog(null, "Name Not Found!");
}

}

答案 2 :(得分:1)

你的逻辑存在很大缺陷。看起来你想迭代一些人的集合,做一个名字比较,当你找到一个人时,你想要一个带有字符串X的消息,当你找不到任何消息时,你想要一个带字符串Y的消息。这就是说,您可能希望将消息处理放在循环外部并使用String来存储找到的名称并将其用于条件化程序。这是一个例子:

String  nameFound = null;

for (int i = 0; i < counter; i++) {
    if (entry[i].getName().equals(SName)) {
        nameFound = entry[i].getInfo2();
        break; // Stop looking since you found the person
    }
}

if (nameFound != null){
    JOptionPane.showMessageDialog(null, nameFound);
} else {
    JOptionPane.showMessageDialog(null, "Name Not Found!");
}