刚刚启动Java所以它可能是一个简单的问题,但是找不到像我这样的问题所以我想发布一个。
我正在编写一个带有选项1-8的“主菜单”。当有人输入一个大于8且小于1的数字时,我想出了如何处理错误,但如果他们输入一个字符或字母,我就无法弄清楚如何给他们一个错误信息......
while(menuChoice != 8)
{
//main menu that loops
switch(menuChoice)
{
case 1:
//code
break;
case 2:
//code
break;
case 3:
//code
break;
case 4:
//code
break;
case 5:
//code
break;
case 6:
//code
break;
case 7:
//code
break;
case 8:
//code
break;
default:
System.out.println("Error: Invalid Menu Selection.");
}
}
答案 0 :(得分:0)
假设这个编译,你所要求的是不可能的。您正在打开一个号码,因此您无法检查该号码是否为字符。如果可能,您的代码将无法编译。
您应该将用户输入作为String
并验证字符串。如果String中包含非数字值,则抛出错误。如果没有,将其转换为数字然后执行您的开关。
更好的设计是拥有验证层。一旦输入被验证,就假设它之后有效。
伪代码:
String input = //
if (containsNonNumerics(input))
throw error
inputAsInt = castToInt(input)
if (outOfRange(inputAsInt)
throw error
switch //your current code goes here
答案 1 :(得分:0)
首先,拥有while循环不会为您提供所需的功能。您应该研究如何使用KeyAdapter以便能够从键盘接收输入事件,例如按下一个数字,然后你可以验证它实际上是一个数字,如果是,你可以使用你的switch语句来确定要执行的正确代码。
答案 2 :(得分:0)
我猜是menuChoice是一个角色。在这种情况下,您可以手动检查
if('0' <= mc && mc <= '9') {
// do your regular checks
}
如果是字符串,则执行
try {
Integer.parseInt(mc)
} catch (NumberFormatException e) { // Not a number. Do your error reporting stuff }
HTH。
答案 3 :(得分:0)
切换语句仅适用于数字类型(int,byte,char,short)。如果你尝试添加切换开关,那么一般情况下,讽刺者会让你满意。但是,如果你以某种方式(cating或其他方式)想要添加switch语句varible,你必须检查它是否如果varible是你想要的类型的statment。 示例:
if(var instanceof String){
System.out.println("Error we don't acceped type string");
}
else{
switch(var){
....
}
}
答案 4 :(得分:0)
在进入while循环之前使用此功能并显示错误消息。
public static boolean isNumeric(String str)
{
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
return str.length() == pos.getIndex();
}