2017-02-07 10 views
1

我的標題有點差,但這是問題。我正在使用Scanner類獲取2個輸入,包括整數。如果一個不是整數,它會告訴用戶輸入另一個輸入。這適用於第一個整數,但在第二個整數(以及任何連續的整數)上工作正常,它會將文本打印兩次。雖然循環檢查掃描儀中的整數在第二次運行時激活兩次

代碼:

public class Project1 { 
    public static void main(String[] args) { 
     // creates a new scanner 
     Scanner scanner = new Scanner(System.in); 

     // rejects input if the first token is not an integer 
     System.out.println("Enter the first integer:"); 
     while(!scanner.hasNextInt()) { 
      scanner.nextLine(); 
      System.out.println("That's not an integer, please enter again:"); 
     } 
     // stores integer in variable when first token is an integer 
     int num1 = scanner.nextInt(); 

     /* ======== repeats for second integer ======== */ 
     System.out.println("Enter the second integer:"); 
     while(!scanner.hasNextInt()) { 
      scanner.nextLine(); 
      System.out.println("That's not an integer, please enter again:"); 
     } 
     // stores integer in variable when first token is an integer 
     int num2 = scanner.nextInt(); 

     System.out.println(num1 + num2); 
    } 
} 

這裏的結果:

"Enter the first integer:" 
>1.2 
"That's not an integer, please enter again:" 
>1 
"Enter the second integer:" 
>2.3 
"That's not an integer, please enter again:" 
"That's not an integer, please enter again:" 
>2 
"3" 

爲什麼它的第二個整數重複兩次?

回答

2

而不是使用nextLine()跳過該行,請使用Scanner類的next()方法。

所以,現在下面的代碼工作正常。

import java.util.*; 
public class Project1 { 
    public static void main(String[] args) { 
     // creates a new scanner 
     Scanner scanner = new Scanner(System.in); 

     // rejects input if the first token is not an integer 
     System.out.println("Enter the first integer:"); 
     while(!scanner.hasNextInt()) { 
      // scanner.nextLine(); 
      scanner.next(); 
      System.out.println("That's not an integer, please enter again:"); 
     } 
     // stores integer in variable when first token is an integer 
     int num1 = scanner.nextInt(); 

     /* ======== repeats for second integer ======== */ 
     System.out.println("Enter the second integer:"); 
     while(!scanner.hasNextInt()) { 
      //scanner.nextLine(); 
      scanner.next(); 
      System.out.println("That's not an integer, please enter again:"); 
     } 
     // stores integer in variable when first token is an integer 
     int num2 = scanner.nextInt(); 

     System.out.println(num1 + num2); 
    } 
} 

輸出

Enter the first integer: 
1.2 
That's not an integer, please enter again: 
2 
Enter the second integer: 
1.3 
That's not an integer, please enter again: 
3 
5