2017-11-05 14 views
0

スキャナとファイルを使用して、1972年から2004年の一般社会調査で測定されたボキャブラリースコアのこのファイルを読み取ります。男性と女性の平均スコアを計算して表示します。スキャナとファイルを使用して.csvファイル(Java)から平均スコアを計算する

私は、行をカンマで区切り、正しいデータを保持する方法がわかりません。ファイルが含まれているものの

例: 女性、7 男性、3 男性、6 男性、10 女性、10

public static void main(String[] args) throws FileNotFoundException { 
     File file = new File("scores.csv"); 
     Scanner in = new Scanner(file); 

     String run = ""; 
     int maleCount = 0; 
    int femaleCount = 0; 
    int maleScore = 0; 
    int femaleScore = 0; 

    while (in.hasNextLine()) { 
     String current = in.nextLine(); 
     in.useDelimiter(","); 
     if (current.contains("f")) { 
      femaleCount++; 
    //    add score onto femaleScore 
     } 
     else { 
      maleCount++; 
//    add score onto maleScore 

     } 

    double femaleAverage = femaleScore/femaleCount; 
    System.out.println(femaleAverage); 
    double maleAverage = maleScore/maleCount; 
    System.out.println(maleAverage); 

     } 

     in.close(); 
    } 
+1

csvファイルにサンプルデータを投稿できますか? – user

答えて

0

は、あなたの計算は、それが計算う意味、whileループの中にありましたファイル内の1行に1回この平均は間違っています。 以下のコードは、データのフォーマットが投稿に記載されているものと同じであることを前提としています。

雌、7

男性、3

男性、6

男性、10

女性、10

public static void main(String[] args) throws FileNotFoundException { 
    File file = new File("scores.csv"); 
    Scanner in = new Scanner(file); 

    String run = ""; 
    int maleCount = 0; 
    int femaleCount = 0; 
    int maleScore = 0; 
    int femaleScore = 0; 

    while (in.hasNextLine()) { 
     String current = in.nextLine(); 
     String[] split = current.split(","); 
     if (split[0].toLowerCase().contains("f")) { 
      femaleCount++; 
      femaleScore += Integer.parseInt(split[1]); 
      //    add score onto femaleScore 
     } else { 
      maleCount++; 
      maleScore += Integer.parseInt(split[1]); 
      //    add score onto maleScore 
     } 

    } 

    double femaleAverage = femaleScore/femaleCount; 
    System.out.println(femaleAverage); 
    double maleAverage = maleScore/maleCount; 
    System.out.println(maleAverage); 

    in.close(); 
} 

データである場合ジfferent、それをここに投稿し、私はあなたの入力ファイルは以下のように構成されていると仮定すると、それに応じて

0

をコードを編集します:

男性、4

女性、7

男性、3

女性、5

など

Th以下のコードはあなたが望むことを行うべきです。あなたはかなり近くにあっただけで、ラインをコンマで区切り、配列のような部分(性別/スコア)を評価しなければなりませんでした。

String filePath = "C:\\Users\\adam\\Documents\\Scores.txt"; 
File file = new File(filePath); 
Scanner scanner = new Scanner(file); 

int maleCount = 0; 
int femaleCount = 0; 
int maleScore= 0; 
int femaleScore = 0; 

while(scanner.hasNext()){ 
    String line = scanner.nextLine(); 
    String[] split = line.split(","); 
    String gender = split[0]; 
    String score = split[1]; 
    if(gender.toLowerCase().trim().equals("male")){ 
     maleCount++; 
     maleScore += Integer.valueOf(score.trim()); 
    }else if(gender.toLowerCase().trim().equals("female")){ 
     femaleCount++; 
     femaleScore += Integer.valueOf(score.trim()); 
    } 
} 

scanner.close(); 

double maleAverage = (double) maleScore/maleCount; 
double femaleAverage = (double) femaleScore/femaleCount; 
System.out.println("Male Average: " + maleAverage);  
System.out.println("Female Average: " + femaleAverage); 
関連する問題