为下面提到的程序获取“线程“主”java.util.NoSuchElementException 中的“异常”错误

问题描述

这里只执行一次,然后给出下面给出的错误。 请帮助我解决这个问题

package project1;

import java.util.Scanner;

public class factorial {

public static void main(String[] args) {
    String y;
    do {
        Scanner sc = new Scanner(system.in);
            
        int flag = 1;
        System.out.println("Print the number:");
        int n = sc.nextInt();
            
        for (int i = 1; i <= n; i++) {
                flag *= i;
        }
        System.out.println(flag);
        System.out.println("Press Y/y to continue");
        y = sc.nextLine();
            
        sc.close();
      } while(y == "Y" || y == "y");
   }
}

输出:(获取异常 java.util.NoSuchElementException)

Print the number:
12
479001600
Press Y/y to continue

y
Print the number:
Exception in thread "main" java.util.NoSuchElementException
   at java.base/java.util.Scanner.throwFor(Scanner.java:937)
   at java.base/java.util.Scanner.next(Scanner.java:1594)
   at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
   at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
   at project1.factorial.main(factorial.java:14)

解决方法

按如下方式更改您的代码:

  • String y 改为 char y

  • 并使用 y = sc.next().charAt(0) 而不是 nextLine()

    读取字符

希望它有效