JAVA编程:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,

写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文... 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。。。多加点注释,谢谢!! 展开
 我来答
yugi111
推荐于2017-09-05 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
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)
{}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式