2016-04-12 8 views
1

私は以下のテキストファイルを取って平均化するために数字の最初の列だけを取得しようとしています。しかし、テキストファイルにもダブルスの前に来る文字列があり、nextLong()が直ちに失敗するため、数字を印刷することはできません。次のように私が持っている コードは、これまでのところです:ダブルスとストリングの両方を含むテキストファイルからダブルスをプリントするだけですか?

import java.io.*; 
import java.util.ArrayList; 
import java.util.InputMismatchException; 
import java.util.List; 
import java.util.Scanner; 
public class cancer{ 

public static void main(String[] args) throws InputMismatchException, FileNotFoundException { 
    Scanner inFile = new Scanner(new FileReader("trainingDataset.txt")); 
    inFile.useDelimiter(","); 
    List<Float> arr=new ArrayList<Float>(); 
    while(inFile.hasNext()){ 
     float token1 = inFile.nextFloat(); 
      arr.add(token1); 
      } 
    inFile.close(); 
    Float[] tempsArray = arr.toArray(new Float[0]); 
     for (Float s : tempsArray) { 
      System.out.println(s); 
     } 
} 

} 

をしかし、私はこの出力を得る:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextFloat(Unknown Source) 
    at cancer.main(cancer.java:13) 

私は理由ダブルスの前に来る文字列のこのエラーを取得しています知っています。私はそれらを平均することができるように数字を取得する必要があり、私はどのように知っている。助けてください!ここで

はテキストファイルです: [trainingDataset.txt] http://txt.do/5w3em

+1

CSV読み取りライブラリを使用します。 –

答えて

1

最初の値が数字ではない行を無視するだけです。すなわち、各行を浮動小数点の代わりに文字列として読み込み、その行を浮動小数点に変換しようとします。数値形式のためにこれが失敗した場合、行を無視して次の行に移動します。

関連する問題