线程“main”中的异常java.util.InputMismatchException

时间:2017-09-10 06:12:36

标签: java

//获取输入数字,然后计算出它是否为素数?   //从键盘输入

   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");
    }

}

}

//如果数字是素数,则打印,否则 //消息"这个数字不是素数"打印出来。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

问题在于:

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

创建Scanner的方法不止一种。一种方法是传入一个字符串,就像你在这里做的那样。然后扫描仪将尝试扫描字符串。在某些行之后,您向扫描仪询问了整数。扫描程序查看字符串“System.in”并说“我在这里看不到整数”并抛出异常。

创建Scanner的另一种方法是传入输入流。然后它将尝试从输入流中读取。这是你应该做的事情:

Scanner scanner = new Scanner(System.in);

注意我是如何删除""的。这意味着System.in现在引用in,即表示控制台输入的输入流实例。