- package com.itheima;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Scanner;
- /**
- * 问题:第1题: 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
- * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称
- * "stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
- *
- * 思路:
- * 1.在键盘上输入5行数据,把这5行数据转换成2维数组
- * 2.计算每行成绩和,也存放在的当前的二维数组中
- * 3.把二维数组按成绩和由大到小排序
- * 4.把数组的数据写入到txt中
- *
- * @author 卢巧红
- *
- */
- public class Test1 {
- public static void main(String[] args) throws IOException {
- Scanner scanner = new Scanner(System.in);
- System.out.println("请输入学生的姓名和三门课成绩(格式为:姓名,语文,数学,英语):");
- String[] score = new String[5];// 定义大小为5的数组,保存每一行的数据
- String[][] info = new String[5][5];// 声明2维数组来存放每条数据的每条记录
- String[][] newInfo = new String[5][5];//用于存放排序之后的记录
- for (int i = 0; i < 5; i++) {
- <b><i> score[i] = scanner.nextLine() + (",0");// 控制台输入的每行数据用,分割</i></b>
- info[i] = score[i].split(",");// 二维数据的每行数据即为控制台输入的每行数据
- int sum = (Integer.parseInt(info[i][1])
- + Integer.parseInt(info[i][2]) + Integer
- .parseInt(info[i][3]));// 求语数外的分数和
- info[i][4] = sum + "";// 分数和也保存在二维数组中
- }
- newInfo = Compare(info);
- SaveToTxt(newInfo);
- }
- // 把二维数组按照成绩和列排序
- public static String[][] Compare(String[][] info) {
- String[] temp = new String[5];
- for (int i = 0; i < 4; i++) {
- for (int j = i + 1; j < 5; j++) {
- // 从大到小排序
- if (Integer.parseInt(info[i][4]) < Integer.parseInt(info[j][4])) {
- temp = info[i];
- info[i] = info[j];
- info[j] = temp;
- }
- }
- }
- return info;
- }
- // 把数据保存到txt中
- public static void SaveToTxt(String[][] info) throws IOException {
- FileWriter fw = null;
- String path = "D:\\stu.txt";
- fw = new FileWriter(path);
- fw.write("姓名\t语文\t数学\t英语\t总分\r\n");
- for (int i = 0; i < 5; i++) {
- for (int j = 0; j < 5; j++) {
- fw.write(info[i][j] + "\t");
- }
- fw.write("\r\n");
- }
- fw.close();
- System.out.println("成绩保存到"+path+"文件中");
- }
- }
复制代码 请问加粗加斜体的那行字为什么能实现 在控制台输入前5条数据时打回车到下一行,5条数据输入完之后打回车出结果呢?
|
|