Java 如何使用JOptionPane退出while循环
我的代码有问题,如果用户单击Java 如何使用JOptionPane退出while循环,java,Java,我的代码有问题,如果用户单击CANCEL.OPTION或CLOSED.OPTION,我将尝试退出此循环。我处理了异常,但似乎无法使用窗口上的按钮。该程序从用户输入的年龄中获取用户的生日。我遇到的问题是,我无法通过按钮结束循环。提前谢谢 public Integer getBirthYear() { boolean prompt = true; while(prompt) { String enteredAge = showInputDialog(null,"Ent
CANCEL.OPTION
或CLOSED.OPTION
,我将尝试退出此循环。我处理了异常,但似乎无法使用窗口上的按钮。该程序从用户输入的年龄中获取用户的生日。我遇到的问题是,我无法通过按钮结束循环。提前谢谢
public Integer getBirthYear() {
boolean prompt = true;
while(prompt) {
String enteredAge = showInputDialog(null,"Enter age:");
try {
age = Integer.parseInt(enteredAge);
if(age == JOptionPane.CANCEL_OPTION || age == JOptionPane.CLOSED_OPTION) {
System.out.println("MADE IT INTO IF");
}
age = year - age;
prompt = false;
showMessageDialog(null,age);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
return age;
}
showInputDialog有多个重载版本,具有不同的参数。当用户按下cancel时,只有上一版本的javadoc正确记录返回值为null
public int getBirthYear() {
boolean prompt = true;
while (prompt) {
String enteredAge = showInputDialog(null,"Enter age:");
if (enteredAge == null) { // Cancel pressed
age = -1;
prompt = false;
} else {
try {
age = Integer.parseInt(enteredAge);
age = year - age;
prompt = false;
showMessageDialog(null, age);
} catch (NumberFormatException e) {
showMessageDialog(null, "Enter a valid number");
}
}
}
return age;
}
你可能想重新构造一下程序;让年龄成为一个局部变量。对实整数值使用
int
Integer
是int的对象包装类。showInputDialog有几个重载版本,具有不同的参数。当用户按下cancel时,只有上一版本的javadoc正确记录返回值为null
public int getBirthYear() {
boolean prompt = true;
while (prompt) {
String enteredAge = showInputDialog(null,"Enter age:");
if (enteredAge == null) { // Cancel pressed
age = -1;
prompt = false;
} else {
try {
age = Integer.parseInt(enteredAge);
age = year - age;
prompt = false;
showMessageDialog(null, age);
} catch (NumberFormatException e) {
showMessageDialog(null, "Enter a valid number");
}
}
}
return age;
}
你可能想重新构造一下程序;让年龄成为一个局部变量。对实整数值使用
int
Integer
是int的对象包装类。对您的问题最简单的回答是,只需将promp=false放在try-and-catch子句之外,它就可以工作了:
public Integer getBirthYear() {
boolean prompt = true;
while(prompt) {
String enteredAge = showInputDialog(null,"Enter age:");
try {
age = Integer.parseInt(enteredAge);
if(age == JOptionPane.CANCEL_OPTION || age == JOptionPane.CLOSED_OPTION) {
System.out.println("MADE IT INTO IF");
}
age = year - age;
showMessageDialog(null,age);
} catch (NumberFormatException e) {
e.printStackTrace();
}
prompt = false;
}
return age;
}
对于您的问题,最简单的答案是,只需将promp=false放在try-and-catch子句之外,它就可以工作了:
public Integer getBirthYear() {
boolean prompt = true;
while(prompt) {
String enteredAge = showInputDialog(null,"Enter age:");
try {
age = Integer.parseInt(enteredAge);
if(age == JOptionPane.CANCEL_OPTION || age == JOptionPane.CLOSED_OPTION) {
System.out.println("MADE IT INTO IF");
}
age = year - age;
showMessageDialog(null,age);
} catch (NumberFormatException e) {
e.printStackTrace();
}
prompt = false;
}
return age;
}
问题出在范围之内。进入的年龄并没有进入禁区。我解决了这个问题
public Integer getBirthYear() {
boolean prompt = true;
do {
try {
age = year - Integer.parseInt(showInputDialog(null,"Enter age:"));
prompt = false;
showMessageDialog(null, age);
} catch (NumberFormatException e) {
String ageEntered = showInputDialog(null,"Enter age:");
e.printStackTrace();
if(ageEntered == null) { //close the file if Cancel is chosen
prompt = false;
}
}
} while(prompt);
return age;
}
问题出在范围之内。进入的年龄并没有进入禁区。我解决了这个问题
public Integer getBirthYear() {
boolean prompt = true;
do {
try {
age = year - Integer.parseInt(showInputDialog(null,"Enter age:"));
prompt = false;
showMessageDialog(null, age);
} catch (NumberFormatException e) {
String ageEntered = showInputDialog(null,"Enter age:");
e.printStackTrace();
if(ageEntered == null) { //close the file if Cancel is chosen
prompt = false;
}
}
} while(prompt);
return age;
}
将promp=false置于try-and-catch子句之外。将promp=false置于try-and-catch子句之外。