java - System.in 无法与 Scanner 配合使用 (NoSuchElementException)

标签 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");
    }
}

最佳答案

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

该行始终打印零,因为您无法根据需要更快地写入文本。

如果您在此行工作之前写入文本(非常几毫秒),则会打印 1。

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

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

Scanner.next throws NoSuchElementException - if no more tokens are available.

解决方案:

使用方法Scanner.hasNext() - 如果 inputStream 包含要读取的字符,则返回 true;否则返回 false。

如果需要读取Line,请使用Scanner.hasNextLine()Scanner.nextLine()

关于java - System.in 无法与 Scanner 配合使用 (NoSuchElementException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47236817/

相关文章:

java - 在 Java 中重置 FileInputStream 以便我可以在测试程序中运行另一个程序的多个实例

java - 读取资源最终为空

java 和 libGDX/LWJGL 游戏全屏尺寸错误,适用于 Ubuntu 上的多个显示器

java - 在浮点上下文中解决整数除法

java - 具有客户端证书身份验证的 WCF 服务的 Tomcat 应用程序

java - 在不关闭 System.in 的情况下关闭扫描仪

java - 从扫描仪获取输入并确定有效日期

java - 为什么 Java System.in.read() 可以调用 which 不是静态方法

java - 在两个不同的请求周期中访问MongoDB Cursor

java - Cygwin 编码困难