While循环问题(Java)
我试图创建一个while循环,如果用户使用了无效条目,它会提示用户重新输入数据。在我的程序中,我要求用户输入一个数字(0-3),因此,如果他们输入的不是这个数字,我希望弹出一条错误消息,要求他们重新输入数据。我不知道我在循环中做错了什么。无论我输入什么,我都会收到错误消息While循环问题(Java),java,while-loop,numberformatexception,Java,While Loop,Numberformatexception,我试图创建一个while循环,如果用户使用了无效条目,它会提示用户重新输入数据。在我的程序中,我要求用户输入一个数字(0-3),因此,如果他们输入的不是这个数字,我希望弹出一条错误消息,要求他们重新输入数据。我不知道我在循环中做错了什么。无论我输入什么,我都会收到错误消息 String itemChoice = JOptionPane.showInputDialog(null, itemList); itemChoiceNum = Integer.parseInt(itemChoice)
String itemChoice = JOptionPane.showInputDialog(null, itemList);
itemChoiceNum = Integer.parseInt(itemChoice);
//test to make sure the input is valid
while (itemChoiceNum != 0 || itemChoiceNum != 1 || itemChoiceNum != 2 || itemChoiceNum != 3) {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
itemChoice = JOptionPane.showInputDialog(null, itemList);
}
数字格式异常
while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 3) {
try {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
itemChoice = JOptionPane.showInputDialog(null, itemList);
itemChoiceNum = Integer.parseInt(itemChoice);
}
catch (NumberFormatException itemChoiceNum ) {
JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
}
错误
你的逻辑不正确。选择不是0、不是1或不是2总是正确的;您需要使用
&&
运算符的“and”
while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 4) {
你的逻辑不正确。选择不是0、不是1或不是2总是正确的;您需要使用
&&
运算符的“and”
while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 4) {
在while条件下使用should
&
而不是|
。到目前为止,它总是返回True。在while条件下使用should&
而不是|
。到目前为止,它总是返回True。接下来,如果用户输入字符串,是否有办法显示错误消息?当我输入字符串时,程序崩溃。捕获NumberFormatException
该Integer.parseInt
抛出的NumberFormatException,并向用户显示带有适当错误消息的消息对话框。我做得对吗?我用我添加的内容更新了我的问题。当我写一封信时,它仍然崩溃。我将错误添加到我的问题中。接下来,如果用户输入字符串,是否有方法也显示错误消息?当我输入字符串时,程序崩溃。捕获NumberFormatException
该Integer.parseInt
抛出的NumberFormatException,并向用户显示带有适当错误消息的消息对话框。我做得对吗?我用我添加的内容更新了我的问题。当我写一封信时,它仍然崩溃。我在我的问题上加了这个错误。