2016-09-26 15 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

あなたは次の間に次のように見えます。テキストを投稿できますか? – serge

+0

あなたの 'inputfile.txt'にはエラーがあります。存在する3つのデータがすべて' String fname、String lname、int age 'であるかどうか確認してください。エラーはあなたのフィールドのいずれかを持っていないので来て、それは主に '年齢'です。 –

答えて

3

私はあなたの入力の1行はこのようなものであると仮定します:

Joe C

この場合、next()にあなたの最初の呼び出しはJoeを返し、2つ目は、Cを返します。今すぐnextInt()に電話をすると、ここには何も読み込まれません。したがって、NoSuchElementException

+0

その場合、 'java.util.InputMismatchException'がスローされます。 'NoSuchElementException'は、読み込みしようとしているデータがファイルに存在しない場合に発生します。 –

+1

@Rishal 'nextInt()'で読み取る次のものが整数ではないもの(例: "London")であるとき、 'InputMismatchException'が来ます。 'NoSuchElementException'は、何も残っていないときに来ます。 –

+0

@JoeC thats私は何を言っているのですか? –

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

あなたのプログラムが正常に動作します!

String 
String 
int 

と作業ディレクトリに存在します。

はinputfile.txtは以下のようになっていることを確認します。あなたのコードにこれを追加することができます作業ディレクトリを見つけるには:

System.out.println("Working Directory = " + System.getProperty("user.dir")); 
関連する問題