2016-09-26 110 views
1

我最近开始学习FileIO,并创建了一个简单的程序,让用户输入他们的姓名和年龄。程序编译罚款,但是当我运行该程序,我得到以下信息:为什么我收到NoSuchElementException?

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

看起来像你需要做的事情在每一个nextNext之间。你能发表你的文字吗? – serge

+0

它有你的'inputfile.txt'这个错误,检查你所有的三个数据是否都是'String fname,String lname,int age'。错误即将到来,因为你没有任何一个领域,它主要是'年龄'。 –

回答

3

我就会认为你输入的一行是这样的:

Joe C

在这种情况下,您对next()第一次调用返回Joe,而第二个将返回C。当你现在拨打nextInt(),这里没有什么可读的。因此NoSuchElementException

+0

如果情况是这样,那么它会抛出'java.util.InputMismatchException'。如果我们试图读取的数据不存在于文件中,则会发生'NoSuchElementException'。 –

+1

@Rishal在nextInt()读取的下一个东西不是整数(例如“London”)时,会出现'InputMismatchException'。当没有剩下要读的时候会出现'NoSuchElementException'。 –

+0

@JoeC多数民众赞成在说什么我想说:) –

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); 
      } 

    } 
} 
1

你的程序工作正常!

确保inputfile.txt就像是:

String 
String 
int 

和存在于工作目录。找到工作目录,您可以将其添加到您的代码:

System.out.println("Working Directory = " + System.getProperty("user.dir")); 
相关问题