2017-09-10 73 views
-2

//獲取輸入數字,然後解決它是否爲素數? //從鍵盤線程「main」中的異常java.util.InputMismatchException

package basicjava; 

    import java.util.*; 

    public class Primes { 

    public static void main(String[] args) { 

    Scanner scanner = new Scanner("System.in"); 
    System.out.println("Enter a Positive Integer Please "); 
    int userInput = scanner.nextInt(); 

    int potentialFactor = 2; 
    while (userInput % potentialFactor != 0) { 
     potentialFactor++; 
    } 
    if (potentialFactor == userInput) { 
     System.out.println("the number is prime"); 
    } 
    else { 
     System.out.println("the number is not prime"); 
    } 

} 

}

//如果數量是素數它被打印,否則 //消息「不是素數」印刷得到輸入。

回答

0

的問題就在這裏:

Scanner scanner = new Scanner("System.in"); 

有創建的方法不止一種Scanner。一種方法是傳遞一個字符串,就像你在這裏所做的那樣。然後掃描儀只會嘗試掃描字符串。在某些行之後,您向掃描儀詢問了一個整數。掃描器查看字符串「System.in」,並說「我在這裏看不到整數」並引發異常。

創建Scanner的另一種方法是傳入輸入流。然後它會嘗試從輸入流中讀取。這就是你應該

Scanner scanner = new Scanner(System.in); 

通知我如何刪除""。這意味着System.in現在引用in,表示控制檯輸入的輸入流的實例。

0

Scanner#nextInt

@throws InputMismatchException 
*   if the next token does not match the <i>Integer</i> 
*   regular expression, or is out of range 

此外,你可以重寫你的代碼:

Scanner scanner = new Scanner(System.in); // there is a System class in java.lang 
相關問題