我正在试着让一个小程序更健壮,我需要一些帮助。
Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;
System.out.print("Enter number 1: ");
num1 = kb.nextInt();
while(num2 < num1) {
System.out.print("Enter number 2: ");
num2 = kb.nextInt();
}
r
而不是数字时,程序就会退出。发布于 2010-05-26 20:44:25
如果此扫描器输入中的下一个标记可以使用int
方法解释为默认基数中的nextInt()
值,则nextInt()
返回nextInt()
。扫描仪不会前进超过任何输入。
下面是一段代码片段来说明:
Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
while (!sc.hasNextInt()) sc.next();
num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);
你不需要parseInt
或者担心NumberFormatException
。请注意,由于hasNextXXX
方法不会越过任何输入,因此如果您想跳过“垃圾”,则可能必须调用next()
,如上所示。
相关问题
发布于 2010-05-26 20:26:10
String
,然后try
Integer.parseInt()
,如果您不catch
一个异常,则它是一个数字,如果您这样做了,则读取一个新的异常,也许可以通过将num2设置为Integer.MIN_VALUE并在您的示例中使用相同类型的逻辑。<>G29catch>
发布于 2010-05-26 20:34:51
这应该是可行的:
import java.util.Scanner;
public class Test {
public static void main(String... args) throws Throwable {
Scanner kb = new Scanner(System.in);
int num1;
System.out.print("Enter number 1: ");
while (true)
try {
num1 = Integer.parseInt(kb.nextLine());
break;
} catch (NumberFormatException nfe) {
System.out.print("Try again: ");
}
int num2;
do {
System.out.print("Enter number 2: ");
while (true)
try {
num2 = Integer.parseInt(kb.nextLine());
break;
} catch (NumberFormatException nfe) {
System.out.print("Try again: ");
}
} while (num2 < num1);
}
}
https://stackoverflow.com/questions/2912817
复制相似问题