为了账号安全,请及时绑定邮箱和手机立即绑定

java经典50题

java经典50题

狼顾之相1995 2016-10-25 10:30:27
【程序50】题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 
查看完整描述

1 回答

?
Super_Scholar

TA贡献25条经验 获得超14个赞

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Scanner;
 
public class Student
{
    double chinese;
    double math;
    double english;
    double sum;
    String sname;
 
    public Student ( double chinese, double math, double english, double sum, String sname )
    {
        this.chinese = chinese;
        this.math = math;
        this.english = english;
        this.sum = sum;
        this.sname = sname;
    }
 
    @Override
    public String toString ()
    {
        return String.format ("%s\t\t%2$.1f\t\t\t%3$.1f\t\t\t%4$.1f\t\t\t%5$.1f", sname, chinese, math, english, sum);
    }
 
    public static void main ( String[] args )
    {
        Scanner scanner = new Scanner (System.in);
        LinkedList<Student> list = new LinkedList<Student> ();
        System.out.println ("从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)<直接回车结束>");
        while (scanner.hasNextLine ())
        {
            String line = scanner.nextLine ().trim ();
            if ("".equals (line))
            {
                break;
            }
            String[] info = line.split ("\\,");
            String name = info[0];
            double chinese = 0;
            double math = 0;
            double english = 0;
            double sum = 0;
            try
            {
                chinese = Double.parseDouble (info[1]);
                math = Double.parseDouble (info[2]);
                english = Double.parseDouble (info[3]);
                sum = chinese + math + english;
            }
            catch (Exception e)
            {
                System.out.println ("格式不正确,重写输入:");
                continue;
            }
            Student student = new Student (chinese, math, english, sum, name);
            list.add (student);
        }
        scanner.close ();
        Collections.sort (list, new Comparator<Student> ()
        {
            @Override
            public int compare ( Student o1, Student o2 )
            {
                if (o1.sum > o2.sum)
                {
                    return -1;
                }
                else if (o1.sum < o2.sum)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
        });
        try
        {
            String file = "stu.txt";
            String line = System.getProperty ("line.separator");
            FileWriter fw = new FileWriter (file, true);
            FileReader fr = new FileReader (file);
            if (fr.read () == -1)
            {
                fw.write ("姓名\t\t语文\t\t数学\t\t英语\t\t总分" + line);
            }
            fr.close ();
            for ( Student student : list )
            {
                fw.write (student.toString () + line);
                fw.flush ();
            }
            fw.close ();
            System.out.println ("加入完毕.");
        }
        catch (IOException e)
        {}
    }
}


查看完整回答
反对 回复 2016-10-25
  • 1 回答
  • 1 关注
  • 1524 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信