gpt4 book ai didi

java - while 循环第二次迭代中的 Scanner NoSuchElementException

转载 作者:行者123 更新时间:2023-11-30 06:13:39 25 4
gpt4 key购买 nike

public static void main(String[] args) {
while(true)
{
System.out.println("Want to repeat :");
Scanner sc = new Scanner(System.in);
if(!sc.next().equalsIgnoreCase("y"))
break;
//Prime number
//isPrimeNumber();

//Fibonacci series
//fibonacciSeries();

//factorial using recursion
getFactorialOfaNumber();

sc.close();
}
}

我正在编写这个程序,每次我检查控制台的输入并根据提供的输入决定是继续还是终止该程序。

第一次它工作正常,但在第二次迭代中我得到了NoSuchElementException。

为什么它在不询问输入参数的情况下抛出异常。

这是控制台输出。

y
FACTORIAL
Enter a number:
6
Factorial is :720
Want to repeat :
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at com.chandu.main.PrimeNumbers.main(PrimeNumbers.java:12)

最佳答案

尝试将 Scanner 对象的初始化放在 while 循环之外,对于关闭指令也是如此:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

while(true)
{
System.out.println("Want to repeat :");
if(!sc.next().equalsIgnoreCase("y"))
break;
//Prime number
//isPrimeNumber();

//Fibonacci series
//fibonacciSeries();

//factorial using recursion
getFactorialOfaNumber();
}
sc.close();
}

在每个循环中创建并关闭扫描仪并不是一个好主意。在您的情况下,您还尝试从封闭的 System.in 中读取值,这会导致问题

关于java - while 循环第二次迭代中的 Scanner NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com