有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java计算文件的平均分数

我正在做一个项目,从一个文件中读取成绩,但该文件包含学生姓名和他们所在的班级,一些有3个成绩,一些有4个成绩。当我试着运行这个程序时,我正在努力解决一个除法0的错误,但在谷歌搜索了很多次后,我还是个java初学者。我可以打开文件,但我正在努力让它读取第一行的平均值,然后继续读取所有其他行,以及返回println中的值

档案内容(分三级):

//Happy CS145 81 85 91
//Sneezy CS145 67 75 75
//Doc CS145 92 97 89
//Dopey CS111
//Grumpy CS145 75 65 66
//Bashful CS145 81 82 81
//Sleepy CS145 71 74 71 

import java.io.FileReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class MainClass {
    public static void main(String args[]){
        int numTestScores = 0;
        int sum = 0;
        int average = 0;
        Scanner input = null;
        try {
            input = new Scanner(new File("PA2data2.txt"));
        } catch (FileNotFoundException ex) {
            System.out.println("Cannot open file - " + ex);
        }
        while (input.hasNext()) {
            while (input.hasNextInt()){
                sum += input.nextInt();
                numTestScores++;
            } 
            average = sum / numTestScores;
            System.out.println(average);
        }
        System.out.println("Average is " + sum / numTestScores);
        input.close();
    }
}

共 (2) 个答案

  1. # 1 楼答案

    应该使用nextLine()而不是nextInt()

    while (input.hasNext()) {
           String line = input.nextLine();
           String[] brokenLine = line.split(" ");
               //do stuff with your array of {Happy, CS145, 81, 85, 91}
                       ...
                       ...
          }
    

    另外,如果你想用double而不是int来表示平均值,否则平均值为0

  2. # 2 楼答案

    只需将除法操作保存在if语句中:

     if(numTestScores > 0) {
            average = sum / numTestScores;
            System.out.println(average);
     }