Java小程序:录入排序及打印学生信息

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

写一个程序从键盘接收学生的信息格式为,name,003,30,30,30(姓名,学号,三门课成绩)

然后把五个学生的信息按照总分从高到低写入一个文件夹”stu.txt”。

要求stu.txt文件的格式要清晰直观,打开文件就可以很清楚的看到学生的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
写这个程序的时候我们都还没学IO流,所以也是临时看了几个视频写的,途中修修改改了好多次。也算是第一个用到IO流的程序吧,或许写得不怎么好,不过这只是个开始,今后会越来越好的。
1、先创建两个数组str和score用于存放输入的数据,创建的长度为6是因为作者本人比较懒,最后一个长度用来作为TEMP
2、使用for语句录入学生考试信息记录到str数组中,并计算总分记录到score数组里
3、使用for循环嵌套,判断总分大小并交换两个数组的内容
4、将str数组遍历输出到stu.txt文件中
*/
import java.util.Scanner;
import java.io.*;
class Test {
public static void main(String[] args) throws IOException {
String[] str = new String[6]; //创建用来存储录入数据的数组,str[5]用来后面交换数组中数据用的临时存储
int[] score = new int[6]; //创建用来存储总分的数组,同上
System.out.println(“请输入(姓名,学号,语文,数学,英文)的格式进行录入数据!”); //提示用户输入的数据格式
Scanner sc = new Scanner(System.in); //创建一个类
for (int i = 0; i < 5; i++) { //for循环,从下标0开始,到下标为4结束
System.out.println(“请输入第” + (i + 1) + “名学生的考试信息:”);
str[i] = sc.nextLine(); //输入学生考试的信息
String[] arrstr = str[i].split(“,”); //分割字符串并将结果赋值给数组arrstr
//计算总分
score[i] += Integer.parseInt(arrstr[2]);
score[i] += Integer.parseInt(arrstr[3]);
score[i] += Integer.parseInt(arrstr[4]);
System.out.println(score[i]); //打印总分,可以用来直观检验计算结果是否正确
}
//两层for循环嵌套,类似九九乘法表,就不解释了
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 5; j++) {
//如果下一个索引中的总分大于上一个索引的总分,则交换其中的数据
if (score[i] < score[j]) {
score[5] = score[i];
score[i] = score[j];
score[j] = score[5];
str[5] = str[i];
str[i] = str[j];
str[j] = str[5];
}
}
}
System.out.println(“”); //仅为了美观,换行
FileWriter fw = new FileWriter(“stu.txt”); //打开STU.TXT文件
for (int i = 0; i < 5; i++) { //for循环,将数据写入到stu.txt中
fw.write(str[i]);
System.out.println(str[i]);
fw.write(“\r\n”);
}
fw.close(); //结束操作,关闭IO流
System.out.println(“”);
System.out.println(“已经将结果写入stu.txt文件中。”); //提示结束程序
}
}

如果你发现了BUG或者哪里还可以优化请给我留言。