2016-09-26 1573 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")); 
相關問題