Java题目2

题目:有一个文件中保持了一个班级的考试成绩,包括学生的学号和语文、数学、英语、物理、化学等成绩,请设计程序读取这些成绩并作出统计放入另一个文件中

存储学生学号和成绩的文件(666.txt):
Java题目2_第1张图片

package ex1;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws FileNotFoundException {
        File f = new File("666.txt");    //定位到该文件
        //获取数据 想用扫描器
        Scanner sc = new Scanner(f);     
        String str = sc.nextLine();      //第一行,学号和科目
        str = str.trim();                //忽略前面和后面的空格
        String[] sub = str.split(" ");   //科目,最前面还有个学号,扎心
        int numOfSub = sub.length-1;       //多少个科目
        ArrayListsubPoint = new ArrayList();  //放学号和分数的
        while(sc.hasNext("[0-9]+")) {  //这里偷个懒,糙一下
            subPoint.add(Integer.parseInt(sc.findWithinHorizon("[0-9]+",0)));
        }
        int numOfStu = subPoint.size()/(numOfSub+1); 
        int[] sum = new int [numOfSub];
        int index = -1;
        for(int i = 0;iindex = i%(numOfSub+1);
            if(index == 0) ;
            else {
                sum[index-1]+=subPoint.get(i);
            }
        }
        double[] aver = new double [numOfSub];
        for(int i = 0;idouble)sum[i]/numOfStu;
        }
        sc.close();
        //接下来将信息写入另一个文件里
        //想用重定向
        File dest = new File("555.txt");
        System.setOut(new PrintStream(dest));
        System.out.println("总人数:" + numOfStu);
        System.out.println("科目 平均分");
        for(int i=0;i"%s %.2f", sub[i+1], aver[i]);  
            //在格式串后面加\n并不能在文件里换行,有大佬能解答一下嘛
            System.out.println();
        }
    }
}

最后运行结果:
//懒,只想统计总人数和平均分
Java题目2_第2张图片

//如有错误欢迎指正
//代码里面的最后一个注释有好心的大佬能解答一下么

你可能感兴趣的:(Java)