2017-12-10 7 views
0

ダブルスのみを含むファイルでnextDouble()を使用すると、java.util.inputmismatchexceptionが返されます。ここでは、コードの関連セクションは次のとおりです。(Java)ファイルをスキャンするときに入力ミスが検出される

public static double[] getGravity() throws IOException 
{ 
    Scanner file = new Scanner("SurfaceGravity.txt"); 
    double[] gravity = new double[8]; 
    for(int index = 0; index < gravity.length; index++) 
     gravity[index] = file.nextDouble(); //Here is where I get the error 
    file.close(); 
    return gravity; 
} 

そして、ここではSurfaceGravity.txt

の内容は
3.700465457603474 
8.8661999605471 
9.8 
3.697967684866716 
24.776754466506414 
10.43814587026926 
8.861473215210253 
11.131680688084042 
0.6128071987535232 

である私は、トークンが間違った型であるときinputmismatchexceptionが発生したという印象の下にあったが、限りファイル内のすべてのトークンが倍になっていると私は少し混乱していると言うことができます。

答えて

0

ストリングSurfaceGravity.txtには2重の値はありません。

が指定された文字列からスキャンされた値を生成するScannerを新しく作成:あなたは、おそらくnew Scanner(new File("SurfaceGravity.txt"))

Scanner(String)のJavadocを参照してくださいしたいです。

そしてScanner(File)

指定されたファイルからスキャンされた値を生成するScannerを新しく作成します。

0

この例では、読み込みたいファイルが初期化されていません。

実装にはいくつかの問題があります。たとえば、ファイル内の項目数が変更された場合、実装を変更する必要があるとしましょう(現時点では8つの値に制限されています)。

public static List<Double> getGravity() throws IOException{ 
    File file = new File("SurfaceGravity.txt"); 
    Scanner input = new Scanner(file); 

    List<Double> list = new ArrayList<>(); 
    while(input.hasNextDouble()){ 
     list.add(input.nextDouble()); 
    } 
    return list; 
} 

注:それは絶対に必要な場合double[]を使用することが可能であるが、そのためには、ファイル内の行数を見つけるために必要があると思います。

関連する問題