为什么此代码会获得Java NoSuchElement异常? [英] Why is this code getting a Java NoSuchElement exception?

查看:103
本文介绍了为什么此代码会获得Java NoSuchElement异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经跟踪了这段代码,无法弄清楚如何修复它。运行代码时,为什么不提示用户输入而不是Java确定没有输入?错误跟踪如下。

I have traced through this code and can't figure out how to fix it. When running the code why wouldn't the user be prompted for input rather than Java determining that there is no input? Error trace below.

import java.util.*;
public class SortAsInserted {

    public static void main(String[] args) {
        int array_size = GetArraySize();
        //System.out.println(array_size);
        String[] myArray = new String[array_size];
        for (int i = 0; i < array_size; i++){
            String next_string = GetNextString();
            System.out.println(next_string);
        }
    }



    //public static String[] SortInsert(String nextString){
        //}

    public static int GetArraySize(){
        Scanner input = new Scanner(System.in);
        System.out.print("How many items are you entering?: ");
        int items_in_array = input.nextInt();
        input.close();
        return items_in_array;


    }

    public static void PrintArray(String[] x) {
        for (int i = 0; i < x.length; i++){
            System.out.print(x[i]);
        }

    }

    public static String GetNextString(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the next string: ");
        String next_string = input.nextLine();
        input.close();
        return next_string;

        }

这是错误 -

How many items are you entering?: 2
Enter the next string: 
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Unknown Source)
    at SortAsInserted.GetNextString(SortAsInserted.java:40)
    at SortAsInserted.main(SortAsInserted.java:10)


推荐答案

简单的答案就是关闭扫描仪时 - 基础输入流也关闭:
http:// docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close()

The simple answer is when you close Scanner -- underlying input stream also closes: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close()

要修复此创建扫描程序一次在main中:

To fix this create Scanner once in main:

 public class SortAsInserted {
     static Scanner input;
     public static void main(String[] _) {
         input = new Scanner(System.in); 
         ....
         input.close();  
     }

这篇关于为什么此代码会获得Java NoSuchElement异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆