任意时间的循环计算

时间:2015-07-12 19:54:48

标签: java for-loop multidimensional-array

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

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

第一行显示课程的年份

第二行第一列显示班级名称,以下两列显示第一行中提到的班级中学生人数。

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

我想要的结果:代码打印如下使用 (i)拆分(ii)parseInt(iii)for-loop

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(" "); 


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


        } 
    }
}

//里面会发生什么...... ????

1 个答案:

答案 0 :(得分:2)

所以在第一行你有几年,先读它们:

      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]);
   }