问题描述
这里只执行一次,然后给出下面给出的错误。 请帮助我解决这个问题
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()
希望它有效