当前位置: 首页 > 知识库问答 >
问题:

我无法找出的扫描仪错误:NoSuchElementExcION

申屠昆
2023-03-14

它在do while循环内的第三行崩溃,不等待我的输入:

 input = kb.nextInt();

堆栈跟踪:

线程“main”java中出现异常。util。非接触性异常

在爪哇。util。扫描仪。throwFor(未知来源)

在爪哇。util。扫描仪。下一个(未知源)

java.util.canner.next国际(来源不明)

java.util.canner.next国际(来源不明)

在主。river.main(river.java:50)

相关代码

do
    {
        displayFullMenu();
        System.out.print("Selection: ");
        input = kb.nextInt();
        
        switch (input)
        {
        //Create new survey
        case 1:     currentSurvey = new Survey();
                    break;
        
        //Display current survey            
        case 2:     currentSurvey.display();
                    break;
        
        //Save current survey           
        case 3:     saveSurvey(currentSurvey);
                    break;
                    
        //Load a survey
        case 4:     currentSurvey = loadSurvey();
                    break;
        
        //Modify a survey
        case 5:     currentSurvey.modify();
                    break;
                    
        /*******************Test Functions*******************/
                    
        //Create new test
        case 6:     currentSurvey = new Test();
                    break;
        
        //Display current test
        case 7:     currentSurvey.display();
                    break;
        
        //Save current test
        case 8:     saveSurvey(currentSurvey);
                    break;
                    
        //Load a test
        case 9:     currentSurvey = loadTest();
                    break;
                    
        //Modify a test
        case 10:    currentSurvey.modify();
                    
        default:    System.out.println("Invalid choice. Please make a valid choice: ");
                    input = kb.nextInt();
                    System.out.println();
        }
    } while (input != 99);
    kb.close();

在我选择选项9后,它会崩溃。它正确保存文件,然后返回到循环的顶部,并在前面提到的行崩溃。我想让它要求更多的投入。

有什么好处?

共有2个答案

马俊
2023-03-14

我想通了。

整个问题都是由于我没有在main中创建静态扫描仪造成的,当我在main之外的其他方法中需要它时,我创建了新的。

而不是

public class MainDriver
{
    public static Scanner kb = new Scanner(System.in);
    public void main(String[] args) throws IOException 
   {

我有:

public class MainDriver
{
    public static void main(String[] args) throws IOException 
    {
        public static Scanner kb = new Scanner(System.in);

然后用其他方法创建了新的扫描仪。在这些方法结束时,我关闭了扫描仪。我猜这是在关闭本地扫描程序,因为当我去掉其他方法中的所有close()语句时,问题就消失了。

苍烨然
2023-03-14

当我在saveSurvey()中选择选项8时,它必须创建一个新的扫描仪(在该方法中),因为所有这些都在我的主方法中。这可能是问题所在吗?

是的,这可能就是问题所在。如果该扫描仪具有相同的源(System.in?)askb和isclose()d关闭底层流,并且kb无法再获取输入。

 类似资料:
  • 对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?

  • 我对的体验非常糟糕,因为我使用的是和。所以我不能做扫描仪的程序。我是新手,所以请帮助我,“找不到”。这是我到目前为止的代码。

  • 这个代码中的对象扫描仪有什么问题? 当我选择案例2时,我得到了这个错误: 我认为scanner首先声明为int,现在在切换之后,我用类型double收集答案。我不太确定,我需要更多地了解scanner类是如何工作的。

  • 我试图让一个扫描器读取文本文件的输入,将该输入放入一个字符串,为该字符串设置一个StringTokenizer,然后设置一个String[],该数组的每个元素都是该StringTokenizer的标记。这样做的目的是从文本文件中获取输入文本的String[],以便数组的每个元素都是文本文件中的一个单词。但是,到目前为止,我的代码生成了一个NoSuchElementFound异常。 为什么会发生这种

  • 声纳扫描仪在运行扫描仪时抛出空指针异常。错误指向一个枚举。它实现了一个典型的接口。 我记得几个月前运行扫描仪时没有出现任何问题,但这次不同了,感谢您的帮助。 添加了一些乱码,我可以保证没有编译问题。 包括声纳项目属性。#所需元数据sonar.project密钥=com.companysonar.project名称=项目sonar.project版本=1.0