JAVA编程:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/31 01:06:10
JAVA编程:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高
JAVA编程:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,
写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中.要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息.多加点注释,
JAVA编程:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高
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
{
\x09double chinese;
\x09double math;
\x09double english;
\x09double sum;
\x09String sname;
\x09public Student ( double chinese, double math, double english, double sum, String sname )
\x09{
\x09\x09this.chinese = chinese;
\x09\x09this.math = math;
\x09\x09this.english = english;
\x09\x09this.sum = sum;
\x09\x09this.sname = sname;
\x09}
\x09@Override
\x09public String toString ()
\x09{
\x09\x09return 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);
\x09}
\x09public static void main ( String[] args )
\x09{
\x09\x09Scanner scanner = new Scanner (System.in);
\x09\x09LinkedList<Student> list = new LinkedList<Student> ();
\x09\x09System.out.println ("从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)<直接回车结束>");
\x09\x09while (scanner.hasNextLine ())
\x09\x09{
\x09\x09\x09String line = scanner.nextLine ().trim ();
\x09\x09\x09if ("".equals (line))
\x09\x09\x09{
\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09\x09String[] info = line.split ("\\,");
\x09\x09\x09String name = info[0];
\x09\x09\x09double chinese = 0;
\x09\x09\x09double math = 0;
\x09\x09\x09double english = 0;
\x09\x09\x09double sum = 0;
\x09\x09\x09try
\x09\x09\x09{
\x09\x09\x09\x09chinese = Double.parseDouble (info[1]);
\x09\x09\x09\x09math = Double.parseDouble (info[2]);
\x09\x09\x09\x09english = Double.parseDouble (info[3]);
\x09\x09\x09\x09sum = chinese + math + english;
\x09\x09\x09}
\x09\x09\x09catch (Exception e)
\x09\x09\x09{
\x09\x09\x09\x09System.out.println ("格式不正确,重写输入:");
\x09\x09\x09\x09continue;
\x09\x09\x09}
\x09\x09\x09Student student = new Student (chinese, math, english, sum, name);
\x09\x09\x09list.add (student);
\x09\x09}
\x09\x09scanner.close ();
\x09\x09Collections.sort (list, new Comparator<Student> ()
\x09\x09{
\x09\x09\x09@Override
\x09\x09\x09public int compare ( Student o1, Student o2 )
\x09\x09\x09{
\x09\x09\x09\x09if (o1.sum > o2.sum)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09return -1;
\x09\x09\x09\x09}
\x09\x09\x09\x09else if (o1.sum < o2.sum)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09return 1;
\x09\x09\x09\x09}
\x09\x09\x09\x09else
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09return 0;
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09});
\x09\x09try
\x09\x09{
\x09\x09\x09String file = "stu.txt";
\x09\x09\x09String line = System.getProperty ("line.separator");
\x09\x09\x09FileWriter fw = new FileWriter (file, true);
\x09\x09\x09FileReader fr = new FileReader (file);
\x09\x09\x09if (fr.read () == -1)
\x09\x09\x09{
\x09\x09\x09\x09fw.write ("姓名\t\t语文\t\t数学\t\t英语\t\t总分" + line);
\x09\x09\x09}
\x09\x09\x09fr.close ();
\x09\x09\x09for ( Student student : list )
\x09\x09\x09{
\x09\x09\x09\x09fw.write (student.toString () + line);
\x09\x09\x09\x09fw.flush ();
\x09\x09\x09}
\x09\x09\x09fw.close ();
\x09\x09\x09System.out.println ("加入完毕.");
\x09\x09}
\x09\x09catch (IOException e)
\x09\x09{}
\x09}
}