我最近开始学习FileIO并创建了一个简单的程序,用户输入他们的名字和年龄。程序编译得很好,但是当我运行程序时,我收到以下消息:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at FileIO.main(FileIO.java:18)
我不确定这个编译器错误意味着什么,如果有人能向我解释,我将不胜感激。谢谢!
import java.util.*;
import java.io.*;
public class FileIO
{
public static void main( String args[] )
{
String sourceFile = "inputfile.txt";
String destinationFile = "outputfile.txt";
try{
File sfile = new File(sourceFile);
Scanner input = new Scanner(sfile);
while(input.hasNext())
{
String fname = input.next();
String lname = input.next();
int age = input.nextInt();
System.out.println(fname + ' ' + lname + ", your age is: " + age);
}
input.close();
}catch(IOException ex){
System.err.println(ex);
}
}
}
答案 0 :(得分:3)
我假设您输入的一行是这样的:
Joe C
在这种情况下,您第一次调用next()
将返回Joe
,第二次调用将返回C
。现在打电话给nextInt()
时,这里没有任何内容可供阅读。因此NoSuchElementException
。
答案 1 :(得分:3)
您可以这样更改:
import java.util.*;
import java.io.*;
public class FileIO
{
public static void main( String args[] )
{
String sourceFile = "inputfile.txt";
String destinationFile = "outputfile.txt";
try{
File sfile = new File(sourceFile);
Scanner input = new Scanner(sfile);
while(input.hasNext())
{
String fname = input.next();
String lname = "";
if (input.hasNext())
lname = input.next();
int age = -1;
if (input.hasNext())
age = input.nextInt();
System.out.println(fname + ' ' + lname + ", your age is: " + age);
}
input.close();
}catch(IOException ex){
System.err.println(ex);
}
}
}
答案 2 :(得分:1)
你的程序运行正常!
确保inputfile.txt类似于:
String
String
int
并存在于工作目录中。要找到工作目录,您可以将其添加到您的代码中:
System.out.println("Working Directory = " + System.getProperty("user.dir"));