gpt4 book ai didi

java - Switch 设置为 int 参数。创建默认情况以排除字符串,这样就不会读取错误

转载 作者:行者123 更新时间:2023-12-02 03:10:54 26 4
gpt4 key购买 nike

下面是一个 switch 语句的示例,有 3 种情况和基于 int 的默认值。我想知道如何让默认返回消息“错误:请重试”,然后在输入除 int 以外的内容时再次循环?目前,如果您输入任何 int,程序都可以正常运行。但是,如果您输入除 int 之外的任何其他字符 - 构建会失败。我是否需要设置另一个案例,然后构建另一个类来处理这个问题?
提前致谢。

int choice;                                              

while(true){

System.out.println("Please enter the number of your choice:");
System.out.println("1. Monitor A");
System.out.println("2. Monitor B");
System.out.println("3. Exit");
choice = scanner.nextInt();

switch(choice){
case 1:
monitorA();
break;
case 2:
monitorB();
break;
case 3:
System.exit(0);
break;
default:
System.out.println("Error: Please Retry");
break;
}
}

最佳答案

使用scanner.nextInt(),如果下一个标记不是int,您将得到一个异常。

InputMismatchException - if the next token does not match the Integer regular expression, or is out of range

(参见Scanner.nextInt())。

int i = -1;

try{
i = scanner.nextInt();
} catch(Exception e){
//print error
}

//your switch case

或者您可以将 switch case 与字符串一起使用(从 java 7 开始)。

String in = scanner.next();
switch(in){
case '1': break;
case '10': break;
default: //print error;
}

或者您可以读取下一个字符串并检查它是否是一个有效的整数,没有异常(exception)

//read next string
String in = scanner.next();

//check if integer
if(!isInteger(in)){
//print your error
}

int i = Integer.parse(in);

//HERE your switch case

isInteger 来自 this Thread :

public static boolean isInteger(String s) {
return isInteger(s,10);
}

public static boolean isInteger(String s, int radix) {
if(s.isEmpty()) return false;
for(int i = 0; i < s.length(); i++) {
if(i == 0 && s.charAt(i) == '-') {
if(s.length() == 1) return false;
else continue;
}
if(Character.digit(s.charAt(i),radix) < 0) return false;
}
return true;
}

关于java - Switch 设置为 int 参数。创建默认情况以排除字符串,这样就不会读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com