Есть ли исключение в Java, чтобы обнаружить отсутствие ввода? - PullRequest
0 голосов
/ 19 февраля 2011

Какое исключение мне нужно добавить в свой блок try catch, если я хочу определить, вводил ли пользователь какие-либо символы?

Это мой код, в котором я хочу узнать, не вводил ли пользователь ничего или ввод пользователя уже был сохранен в addressbook. Я использую массив для хранения своих записей:

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 class 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;
    try {
        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!");
            }
        }
    }catch(NumberFormatException e){
        JOptionPane.showMessageDialog(null, "Please Choose a Number in the displayed Menu");
    }
}

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() {
    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;
        }
    }
}

}

У меня проблема с моим addEntry() методом, потому что я хочу определить, была ли новая добавленная запись пользователя уже сохранена в моей адресной книге и не набрал ли пользователь что-либо, когда я спрашиваю «Введите имя:» в JOptionPane и все еще нажмите ОК.

Ответы [ 4 ]

2 голосов
/ 20 октября 2012

Я не знаю ни одного исключения, но вы можете использовать метод length.

Пример:

input=(JOptionPane.showInputDialog(frame1, "what do you want?"));
    if(input.length() > 0) {
        l1.setText("a " + input + " on the way!");
    }
    else{
        l1.setText("would you please choose something");
    }

, если длина больше нуля

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

Хотя ваш вопрос не совсем ясен, я постараюсь ответить на него.
В этом случае вы можете вручную создать собственное исключение, например,

throw new MyException();    

Поскольку ваше условие " Пользователь не вводил какой-либо символ " само по себе не ясно, я бы посоветовал вам попробовать вызвать исключение, проверив переданное количество аргументов no командная строка.
Если оно равно 0, т. Е. Аргументы не передаются, вы можете выдать собственное исключение.

Но само по себе исключение не будет выброшено.

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

Из вашего обновленного вопроса кажется, что вы говорите о вводе пользователем из диалоговых окон. Javadoc сообщает, что методы showInputDialog возвращают либо строку пользователя (которая может быть пустой), либо null, если пользователь отменил диалог.

Нет исключений. Пользователь, отменяющий диалог, не является «исключительным».

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

В общем, когда какой-то метод выдает исключение, а вы его не перехватываете, либо компилятор предупреждает вас об этом (для проверенных исключений), либо когда исключения генерируются во время выполнения, вы видите приятную трассировку стека на консоли (стандартная ошибка). Если вы этого не видите, то либо вы поймали (и выбросили) это исключение, либо исключения нет.

Пользователь не вводил ни одного символа сам по себе не является условием, которое заставляет кого-либо генерировать исключение, нам потребуется больше контекста.

...