【发布时间】:2018-09-04 22:20:46
【问题描述】:
我是 Java 新手。 这是一个非常简单的切换方法。
当用户在这里键入 String 时,它会抛出一个错误,并且 catch 会按照编码再次调用此方法。
这是我关于扫描仪的问题。
我意识到我需要把那些
Scanner sc = new Scanner(System.in);
在“try”正文中,如果我想让它告诉我再次进行物理输入,但这是为什么呢?为什么要打字
int select = sc.nextInt();
还不够吗?
会
int select1 = sc.nextInt(); 和
int select2 = sc.nextInt(); 是否相同,因为它具有相同的“sc”实例?
public void reAsk(){
System.out.println("Type a number")
Scanner sc = new Scanner(System.in);
try {
int select = sc.nextInt();
switch (select) {
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
} catch (InputMismatchException e) {
System.out.println("Please type int");
reAsk();
}
}
【问题讨论】:
-
1.您必须将其放在
try块中,因为如果您输入的内容不是int,那么它将引发错误。在您的catch块中,您可以调用该方法,以便只要输入无效,它本质上就会继续调用该方法 -
2.不,他们不会是一样的。
nextInt()函数消耗部分输入。因此,如果您只是输入 5 然后 6,第一次调用nextInt()将消耗 5,将其解析为第一个变量,然后第二次调用nextInt()将消耗 6 并将其解析为第二个变量,分别制作5和6这两个变量 -
请不要再调用方法
reAsk本身。这将增加方法嵌套,可能会减慢您的应用程序,因为另一个reAsk方法尚未完成但调用了另一个。相反,围绕你的逻辑包裹一个循环并重复循环,直到输入正常。
标签: java loops java.util.scanner