我有一个名为enroll.txt的纯格式txt文件,其中包含:

1997 2000
cs108 40 35
cs111 90 100
cs105 14 8
cs101 180 200


第一行显示上课年份

第二行第一列显示班级名称,随后两列显示第一行中提到的年份中班级的学生人数。

例)1997年,cs108班有40名学生。

我期望的结果:使用以下代码打印
(i)拆分(ii)parseInt(iii)for循环

student totals:
    1997: 324
    2000: 343


但是此代码也可以使用任意年限(例如,如果我每个班级有四年而不是两年的学生人数,则该代码仍会给我类似的输出,例如学生总数为1997、2000、2001 ,2002等)。

到目前为止,我有:

    import java.util.*;
    import java.io.*;

    public class ProcessCourses{
        public static void main(String[] args) throws FileNotFoundException{

        Scanner console = new Scanner(System.in);
        String fileName = console.nextLine();

        Scanner input = new Scanner(new File(fileName));

        while(input.hasNextLine()){
            String line = input.nextLine();
            String[] arr = line.split(" ");


           //......????


        }
    }
}


// ....里面会有什么????

最佳答案

因此,在第一行中,您有很多年,请先阅读它们:

      Scanner input = new Scanner(new File(fileName));
      String str = input.nextLine();
      String[] years = str.split(" ");


现在您已经获得了学生的信息,

      int[] total = new int[years.length];
      while(input.hasNextLine()){
        String line = input.nextLine();
        String[] strength = line.split(" ");
        int len = strength.length; // no of entries which includes course id + "years" no.of numbers.

        for(int i=1;i<len;i++){ // from 1 because you don't care the course id
             total[i-1] = total[i-1] + Integer.parseInt(strength[i]);
        }
     }


然后打印:

   for(int i=0;i<years.length;i++){
       System.out.println(years[i]+ " : " + total[i]);
   }

09-05 19:32