我有一个名为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]);
}