【问题标题】:is there any Exception in Java that to detect no input?Java中是否有任何异常可以检测到没有输入?
【发布时间】:2011-02-19 03:08:57
【问题描述】:

如果我想检测用户是否输入了任何字符,我需要在 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++;
}

我需要 try-catch 还是条件?这是我的完整代码:

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 中询问“输入名称:”时用户是否没有输入任何内容并仍然按 OK。

【问题讨论】:

  • 你能补充一点上下文吗?
  • 请详细说明您的问题。不清楚你想说什么。它被正确地标记为“家庭作业”

标签: java exception try-catch variable-assignment


【解决方案1】:

虽然对你的问题不是很清楚,但我会尽力回答。
在这种情况下,您可以在此处手动创建自己的异常,例如,

throw new MyException();    

由于您的条件“用户没有输入任何字符”本身并不清楚,我建议您可以通过检查参数的数量来尝试抛出异常通过命令行传递。
如果它是 0,即没有传递参数,你可以抛出你自己的异常。

但它本身不会抛出异常。

【讨论】:

    【解决方案2】:

    我不知道有什么异常,但是你可以使用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");
        }
    

    如果长度大于零

    【讨论】:

      【解决方案3】:

      从您更新的问题来看,您似乎在谈论来自对话框的用户输入。 javadoc 说showInputDialog 方法返回用户的字符串(可能为空)或null 如果用户取消对话框。

      不抛出异常。取消对话框的用户不是“异常”的。

      【讨论】:

        【解决方案4】:

        一般来说,当某个方法抛出异常并且您没有捕获它时,编译器会提醒您这一点(针对已检查的异常),或者当异常在运行时抛出时,您会在控制台上看到一个很好的堆栈跟踪(标准错误)。如果你没有看到这个,那么要么你已经捕获(并丢弃)了这个异常,要么没有异常。

        用户没有输入任何字符本身并不是导致任何人抛出异常的条件,我们需要更多上下文。

        【讨论】:

        • @sir paulo...我在 addEntry() 方法中发布了一些代码...希望您能帮助我...再次感谢
        猜你喜欢
        • 1970-01-01
        • 2017-09-15
        • 1970-01-01
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多