Java 扫描器输入循环在第一次循环后抛出 No Such Element 异常

Java scanner input loop throwing No Such Element exception after first loop

我想要一个反复提示用户输入数字然后打印该数字是否为素数的程序。这工作一次,然后在下一次迭代中它会在用户输入另一个输入之前给出一个没有这样的元素异常。

我试过将 IF 语句与 hasNext() 或 hasNextInt() 一起使用,但出于同样的原因,它们似乎从来都不成立。我还尝试使用 FOR 循环迭代固定次数,但这会产生相同的错误。为什么这允许用户在第一次循环时输入但之后却不允许?

public static void primeChecker() 
{ 
      Scanner scan = new Scanner(System.in);
      System.out.print("Please enter a number: ");
      int number = scan.nextInt();
      if (isPrime(number)) {
        System.out.println(number + " is prime");
      }
      else {
        System.out.println(number + " is not prime");
      }
      scan.close();
}

public static void main(String[] args) 
{
    int y=1;
    while(y!=0)
    {
      primeChecker();
}

删除 scan.close();,因为它正在关闭扫描仪。

为了不间断地反复询问用户号码,需要在代码两边加上while

以下是我对这一挑战的看法:

public static void primeChecker() {

    while(true) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Please enter a number: ");
        int number = scan.nextInt();
        if (isPrime(number)) {
            System.out.println(number + " is prime");
        } else {
            System.out.println(number + " is not prime");
        }
      
    }      
}

public static void main(String[] args) {
    primeChecker();
}

这段代码应该反复询问你一个数字(在告诉你之前的答案是什么之后)。它对我有用!

同时 (scan.hasNextInt) { int n = scan.nextInt(); ... }