2017-09-10 2 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"); 
    } 

} 

}에서 입력을 가져옵니다. 또한 Scanner#nextInt

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

답변

0

문제는 여기에있다 :

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

이를 만드는 여러 가지 방법이 있습니다 Scanner. 한 가지 방법은 여기에서했던 것처럼 문자열을 전달하는 것입니다. 그러면 스캐너는 문자열을 스캔하려고 시도합니다. 몇 줄 후에 스캐너에 정수를 요청했습니다. 스캐너는 문자열 "System.in"을보고 "여기에 정수가 없습니다"라고 말하고 예외를 throw합니다.

Scanner을 만드는 또 다른 방법은 입력 스트림을 전달하는 것입니다. 그런 다음 입력 스트림에서 읽으려고 시도합니다. 이것은 무엇인지 해야 할 : 나는 ""을 제거하는 방법

Scanner scanner = new Scanner(System.in); 

알 수 있습니다. 즉, System.in은 콘솔의 입력을 나타내는 입력 스트림의 인스턴스 인 in을 참조합니다.

0

, 당신이 코드를 다시 작성할 수 있습니다 :

Scanner scanner = new Scanner(System.in); // there is a System class in java.lang 
관련 문제