我有一个名为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(" ");
//......????
}
}
}
//里面会发生什么...... ????
答案 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]);
}