Java 扫描仪抛出 NoSuchElementException [已关闭]

问题描述 投票:0回答:1

我重新学习JAVA有一段时间了,但我发现以前使用的Scanner库停止工作了,这是我之前知道的基本代码

import java.util.Scanner;

public class Main 
{

    public static void main(String[] args) 
    {
    int a;
    int b;
    Scanner odczyt = new Scanner (System.in);
    a = odczyt.nextInt();
    b = odczyt.nextInt();

    System.out.println(a);
    System.out.println(b);
    }
    
}

现在它返回以下错误:

> Task :run FAILED
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 Matematyka.Main.main(Main.java:22)

据说库已更新,现在它的实现需要不同的代码?我正在使用 Apache NetBeans IDE 19

我尝试使用类 Scanner 以便应用程序询问用户输入值,但似乎以前使用的代码不起作用并返回错误。

java java.util.scanner nosuchelementexception
1个回答
-1
投票

确保用户提供的输入是 int 并注意其他。为了确保这一点,当您使用

odczyt.nextInt();
时,请确保您只需添加
odczyt.nextLine();
即可阅读整行。如果这不起作用,请确保您可以在
String temp = odczyt.nextLine();
中阅读整个答案,然后遍历字符串并找出整数值可能是什么。

    String temp = odczyt.nextLine();
    String number = "";
    for(int i = 0; i<temp.length;i++)
        if(temp.charAt(i).isDigit())
            number = number + String.valueOf(temp.charAt(i));
    int temp = 0;
    try{
        temp = Integer.parseInt(number);
    }catch(NumberFormatException e){
        // debug here
    }

这是一个非常漫长而乏味的过程,但我觉得这可以帮助您重新掌握数字格式的工作方式。 (我将所有这些编码在文本框中,因此只需编辑任何拼写错误(如果有))这也是一种调试方法,因此有更有效的方法来做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.