System.in无法使用Scanner(NoSuchElementException)

时间:2017-11-11 10:20:32

标签: java system.in

所以我正在创建一个包含数组等的简单程序,我的程序编译得很完美。但是,当我运行它并输入我的文件名(航班)时,我的程序给了我错误NoSuchElementException我通过以下代码查明System.in是否可用来深入研究:

System.out.println(System.in.available());

这是我的其他相关代码:

import java.util.Scanner;
import java.io.*;

public class FlightAirportController
{    
    public static void main(String[] args) throws IOException
    {
        Scanner input = new Scanner(System.in);
        System.out.print("Please name the Input File: ");
        System.out.println(System.in.available()); // checks if System.in is working: output is either 0 or 1.
        Scanner fileScanner = new Scanner(new File(input.next() + ".txt"));
        fileScanner.useDelimiter(", |\n");
    }
}

2 个答案:

答案 0 :(得分:1)

System.out.println(System.in.available());

此行始终为零,因为您无法根据需要更快地编写文本。

1将打印,以防您在此行工作之前写入文本(非常几毫秒)。

new File(input.next() + ".txt")

Scanner.next()返回第一个空格。如果文件名包含空格,则使用Scanner.useDelimiter(pattern)设置分隔符。

  

Scanner.next抛出NoSuchElementException - 如果没有更多的令牌   可用。

解决方案:

use method Scanner.hasNext() - 如果inputStream包含要读/ false的字符,则返回true - 否则返回。

如果您需要阅读行,请使用Scanner.hasNextLine()Scanner.nextLine()

答案 1 :(得分:0)

您错过了文件位置。

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class FlightAirportController
{
    public static void main(String[] args) throws IOException
    {
      Scanner input = new Scanner(System.in);
      System.out.print("Please name the Input File: ");
      System.out.println(System.in.available()); // checks if System.in is working: output is either 0 or 1.
      Scanner fileScanner = new Scanner(new File("C:\\Users\\..\\"+input.next() + ".txt"));
      fileScanner.useDelimiter(", |\n"); 
    }
}

NoSuchElementException即使next没有要提供的下一个元素,也会在您Scanner致电时出现。 <{1}}使用file.next()会有所帮助。