2017-09-10 49 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 
相关问题