2

現在、HDDからファイルを読み込もうとしています。ファイル名は「Sample.txt」です。以下は私のコードです。コンパイルして実行することはできますが、次のエラーが表示されます。

 Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at Proj1GradesService.errorReport(Proj1GradesService.java:42)
at Proj1GradesClient.main(Proj1GradesClient.java:13)

While ループだけでファイルを読み込もうとしましたが、今は try/catch で読み込もうとしましたが、同じエラーが発生しました。正確に何が問題なのかわかりません。サービス クラスからファイルを読み取ろうとしており、クライアント クラスからメソッド errorReport() を呼び出しています。どんな助けでも大歓迎です。

import java.util.*;   //allows use of Scanner class
import java.io.*;   //for File and IOException classes

class Proj1GradesService
{   //begin Proj1GradesService

  public void pageAndColHeading(char letter)   //accepts char as a parameter
  {   //start pageAndColHeading
     switch (letter)
     {   //start switch
        case 'e':   //write the caption for error report
           System.out.println ("Error Report - Students With Invalid GPA");   //prints Error Report
           break;

        case 'v':   //write the caption for valid report
           System.out.println ("Valid Report - Students With Valid");   //prints Valid Report
           break;
        default:  ;  //do nothing
     }//end switch
  }   //end pageAndColHeading

  public void errorReport() throws IOException
  {   //start errorReport

     Scanner scanFile = null;
     try
     {
        scanFile = new Scanner (new File ("p1SampleGPAData.txt"));
     }
        catch (FileNotFoundException fnfe)
        {
           System.out.println ("wrong file name."); 
        }   

     String name;   //name read from file
     double gpa;   //gpa read from file
     int count = 0;   //line #

     while (scanFile.hasNext( )) 
     {
        name = scanFile.next();
        gpa = scanFile.nextDouble();
        System.out.println ("Line Number: " + count + "Name: " + name + "GPA: " + gpa);

        ++count;
     }   //end while
     scanFile.close();

  }    //end errorReport


}   //end class
4

4 に答える 4

0

入力ファイルがどのように見えるかを知らずに、文字データを に読み取ろうとしておりdouble、読み取られている文字が double でないため、このエラーが発生しています。

読み込んでいるすべてのデータが、期待どおりの形式であることを確認してください。

これが私だったら、データ全体を文字列に読み取ってから、それらの文字列を double に変換しようとするので、そのステートメントを a で囲み、try/catch適切に処理できます。

于 2013-06-19T21:22:18.750 に答える
0

通常、解析しようとしているものが期待InputMismatchExceptionされる形式と一致しない場合にスローされます。Scanner

したがって、この場合、入力ファイルをチェックして、解析している要素が実際にdouble. 余分な空白にも注意してください。

于 2013-06-19T21:15:54.010 に答える