所以我正在创建一个包含数组等的简单程序,我的程序编译得很完美。但是,当我运行它并输入我的文件名(航班)时,我的程序给了我错误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");
}
}
答案 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()
会有所帮助。