而try-catch结构和异常

时间:2015-02-28 19:33:11

标签: java exception-handling try-catch

我希望不断获得用户的输入,但有一些限制。输入必须包含1个整数,1个字符串,1个整数,1个字符串。 (即" 3 + 1 - "," 1a4k")。如果用户以错误的方式提供输入,我会警告"输入错误"。

int a = scanner.nextInt();
String b = scanner.next();
int c = scanner.nextInt();
String d = scanner.next();

我将使用该结构来获得我想要的输入。但是,如果用户没有为a输入整数值,用户输入其他值,如String或其他值,我也想警告" Bad input"。我无法处理它。我只是这样编码:

while(true) {
     try {
         System.out.print("Enter: ");
         int a = scanner.nextInt();
         String b = scanner.next();
         int c = scanner.nextInt();
         String d = scanner.next();
         // Some logics
     } 
     catch(Exception e) {
         System.out.println("Bad input");
         scanner.next();
     }
}

" 3 + 1 - "," 2 a 2 e"," 3 t 3 - "没关系。

" 3+ 1 - "," 3 + 1 - "," 3 + 1 - "," 3 + 1- "不行。

我很好,没有问题。但是,当输入不正常时,输出了多个警告。我只想要一个警告。

我该如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

在发生异常的情况和输入正常的情况下,您应该使用当前行的结尾,但是您希望循环的下一次迭代从下一行读取输入。

while(true) {
     try {
         System.out.print("Enter: ");
         int a = scanner.nextInt();
         String b = scanner.next();
         int c = scanner.nextInt();
         String d = scanner.next();
         scanner.nextLine();
         // Some logics
     } 
     catch(Exception e) {
         System.out.println("Bad input");
         scanner.nextLine();
     }
}