如果我想检测用户是否输入了任何字符,我需要添加到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中仍然按OK。
答案 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");
}
如果长度大于零
答案 1 :(得分:1)
通常,当某个方法抛出异常并且您没有捕获它时,编译器会提醒您(对于已检查的异常)或者在运行时抛出异常时,您会在控制台上看到一个很好的堆栈跟踪(标准错误)。如果你没有看到这个,那么你已经捕获(并抛弃)了这个异常,或者没有例外。
用户没有输入任何字符本身并不是导致任何人抛出异常的条件,我们需要更多的上下文。
答案 2 :(得分:1)
虽然对你的问题不太清楚,但我会尽力回答。
在这种情况下,您可以在此处手动创建自己的例外,例如
throw new MyException();
由于您的条件“ 用户未输入任何字符 ”本身并不清楚,我建议您可以尝试通过检查参数的数量来抛出异常传递给命令行。
如果它为0,即没有传递参数,则可以抛出自己的异常。
但就其本身而言,不会抛出异常。
答案 3 :(得分:1)
根据您更新的问题,您似乎在谈论来自对话框的用户输入。 javadoc表示如果用户取消了对话框,showInputDialog
方法将返回用户的String(可能为空)或null
。
不会抛出任何异常。取消对话框的用户不是“例外”。