Проблема с моими условиями в Java - PullRequest
0 голосов
/ 18 февраля 2011

добрый день ...

У меня проблема с поиском записей в моей программе адресной книги ... Я уже ищу их ... но у меня проблема с отображением "Имя не найдено!""сообщение, если имя еще не сохранено в моей адресной книге.Можете ли вы помочь мне выяснить, что не так с этим ...

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 ... спасибо заранее

Ответы [ 3 ]

3 голосов
/ 18 февраля 2011

переместите это:

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 голос
/ 18 февраля 2011

Ваша логика довольно ошибочна.Кажется, вы хотите перебрать некоторую коллекцию людей, сделать сравнение имен, и когда вы найдете кого-то, вам нужно сообщение со строкой 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!");
}
1 голос
/ 18 февраля 2011
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!");
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...