Проблема логики в адресной книге, не должно быть пустых записей или такой же записи ... Пожалуйста, помогите - PullRequest
0 голосов
/ 19 февраля 2011

надеюсь, что вы можете помочь мне в кодировании.

Что мне нужно сделать: 1.) Я не должен позволять пользователю иметь пустую запись .. Я должен предлагать им, как "Имя не введено!"2.) Я не должен позволять пользователю вводить одну и ту же запись.

Понятия не имею, как кодировать i, пожалуйста, помогите.

Вот мой полный код:

publicclass AddressBook {

private AddressBookEntry entry[];
private int counter;
private String SName;
private int notfound=0;

public static void main(String[] args) {
    AddressBook a = new AddressBook();
    a.entry = new AddressBookEntry[100];
    int option = 0;
    while (option != 5) {
        String content = "Choose an Option\n\n"
                + "[1] Add an Entry\n"
                + "[2] Delete an Entry\n"
                + "[3] Update an Entry\n"
                + "[4] View all Entries\n"
                + "[5] View Specific Entry\n"
                + "[6] Exit";
        option = Integer.parseInt(JOptionPane.showInputDialog(content));
        switch (option) {
            case 1:
                a.addEntry();
                break;
            case 2:
                a.deleteEntry();
                break;
            case 3:
                a.editEntry();
                break;
            case 4:
                a.viewAll();
                break;
            case 5:
                a.searchEntry();
                break;
            case 6:
                System.exit(1);
                break;
            default:
                JOptionPane.showMessageDialog(null, "Invalid Choice!");
        }
    }
}

public void addEntry() {
    entry[counter] = new AddressBookEntry();
    entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
    entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
    entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
    entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
    counter++;
}

public void viewAll() {
    String addText = "  NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n\n";
    int nonNull = 0;
    for (int i = 0; i < entry.length; i++) {
        if (entry[i] != null) {
            addText = addText + entry[i].getInfo() + "\n";
            nonNull++;
        }
        if (nonNull == counter) {
            break;
        }
    }
    JOptionPane.showMessageDialog(null, new JTextArea(addText));
}

public void searchEntry() {
    SName = JOptionPane.showInputDialog("Enter Name to find: ");
    searchMethod();
}

public void searchMethod() {
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            JOptionPane.showMessageDialog(null, entry[i].getInfo2());
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
public void editEntry() {
    int notfound = 0;
    SName = JOptionPane.showInputDialog("Enter Name to edit: ");
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            entry[i] = new AddressBookEntry();
            entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
            entry[i].setAdd(JOptionPane.showInputDialog("Enter new add: "));
            entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
            entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail: "));
            notfound = 0;
            break;
        } else {
            notfound++;
        }
    }
    if (notfound != 0) {
        JOptionPane.showMessageDialog(null, "Name Not Found!");
    }
}
public void deleteEntry() {
    SName = JOptionPane.showInputDialog("Enter Name to delete: ");
    for (int i = 0; i < counter; i++) {
        if (entry[i].getName().equals(SName)) {
            JOptionPane.showMessageDialog(null, "Found!");
            entry[i] = null;
            break;
        }
    }
}

}

Что случилось с моим кодом, так это то, что он позволяет пользователю нажимать «ОК», даже если он еще не вводит никаких символов ..., а также позволяет идентичный ввод...

Надеюсь, вы сможете мне помочь ... Мне это нужно очень скоро, и все же у меня все еще нет идеи, что добавить в мой код ... Пожалуйста, помогите большое спасибо ..

1 Ответ

2 голосов
/ 19 февраля 2011

Что случилось с моим кодом, так это то, что он позволяет пользователю нажимать «ОК», даже если он еще не вводит какой-либо символ ... и также позволяет идентичный ввод ...

Метод showInputDialog позволяет пользователю вводить любую строку, которую он хочет, или также ничего. Если вы не хотите этого, вы можете либо использовать самодельный диалог, исправить патч JOptionPane (используя подкласс или тому подобное), либо просто показать диалог снова, когда он не является одной из заданных вами строк, например так:

String input = JOptionPane.showInputDialog(content);
try {
   option = Integer.parseInt(input);
}
catch(NumberFormatException ex) {
   // the user typed nothing, or something that is not an integer
   // TODO: show error message
   // => go to next iteration of while loop.
   continue; 
}
// and now our switch ...
...