需要有关扫描仪错误java.util.NoSuchElementException的帮助



我正在进行一个计算分数的项目,然而这个程序只是用来读取用户输入并返回其中的一部分,但结果如下:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at fracCalc.fracCalcCheckUno.produceAnswer(fracCalcCheckUno.java:21)
at fracCalc.fracCalcCheckUno.main(fracCalcCheckUno.java:14)

预期行为

代码应该读取用户输入,然后返回它的第二部分,我称之为"操作2">

当前行为

代码导致错误:

Exception in thread "main" 
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at fracCalc.fracCalcCheckUno.produceAnswer(fracCalcCheckUno.java:21)
at fracCalc.fracCalcCheckUno.main(fracCalcCheckUno.java:14)

上下文

由于此错误,我无法接收任何用户输入。

复制步骤(针对错误(

package fracCalc;
import java.util.Scanner;
public class fracCalcCheckUno{
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
System.out.print("Input fraction expression: ");
String phrase = a.next();
String b = produceAnswer(phrase);
System.out.println(b);
}    
public static String produceAnswer(String phrase) {
Scanner console = new Scanner(phrase);
String operand1 = console.next();
String operator = console.next();
String operand2 = console.next();
String answer = produceAnswer(phrase);
System.out.println(answer);
return operand2;
}
}

您忘记了放置基本情况。在流中的某个点上,scanner没有任何可获得的东西。这就是它给出的原因

java.util.NoSuchElementException

String phrase = a.next();在将令牌传递到方法之前,只从扫描程序变量a中获取一个令牌。您目前正在尝试从扫描仪中获取3个令牌,但扫描仪在初始化时只获得1个令牌,这会导致异常。您需要更改为String phrase = a.nextLine();才能获得整行令牌。

您还需要将String answer = produceAnswer(phrase);更改为其他内容,因为您当前正在无限递归循环中调用produceAnswer(phrase),这将导致StackOverflowException。

相关内容

最新更新