2016-04-18 8 views
0

データの平均値を計算しようとしています。datastracture arraylist string

try { 

    List<String>lines=Files.readAllLines(Paths.get("crimerate.csv")); 

    for (String line:lines){ 

     line=line.replace("\"",""); 
     String []result=line.split(","); 

     double sum=0; 
     double num =0; 
     double close = Double.parseDouble(result[1]); 
     sum+=close; 
     num++; 

     System.out.println(sum/num); 

    } 
} catch(Exception e){ 
    System.out.println(e.getMessage()); 
} 

crimerate.csv

state number city 

CA   12  LA 

TX   20  DA 

DC   24  DC 

MN   10  MI 

結果が入力された文字列についてある:代わり16.5の "数"。誰か助けてくれますか?

+0

毎回ループ内の変数をリセットしていますか?編集の後、最初の行を破棄しています( 'Double.parseDouble()'呼び出しを渡しません)。 – KevinO

+1

表示されたデータにこれらの文字がない場合は、引用符を置き換えてコンマで区切っているのはなぜですか? –

答えて

0

アキュムレータをループ外に移動します。最初の行をスキップします。私は置換と分割が実際にあなたの入力データに基づいて動作することを前提としています。そうでない場合は、line.splitを適切に更新する必要があります。

try { 
    List<String>lines=Files.readAllLines(Paths.get("crimerate.csv")); 

    double sum = 0, num = 0; 
    for (String line:lines){ 
     //ignore first line 
     if (num == 0) { 
     ++num; 
     continue; 
     } 

     line=line.replace("\"",""); 
     String []result=line.split(","); 

     double close = Double.parseDouble(result[1]); 
     sum+=close; 
     num++; 


     }// end of for-loop 
     System.out.println(sum/num); 
}catch(Exception e){ 
    System.out.println(e.getMessage()); 
} 
+0

@vishalgajera、あなたは正しいです。私は意図的に '.println()'をtryブロックの外に移動しました。あるいは、より良いアプローチは、宣言と '.println()'の両方をtryブロックの中に持つことです。編集していただきありがとうございます。 – KevinO

+0

うん。ようこそ。 –

+0

ありがとうございます@KevinO – user6167014

関連する問題