黑马程序员技术交流社区

标题: 控制台输入多条数据问题 [打印本页]

作者: luqh    时间: 2015-3-21 11:23
标题: 控制台输入多条数据问题

  1. package com.itheima;

  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Scanner;

  5. /**
  6. * 问题:第1题: 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  7. * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称
  8. * "stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  9. *
  10. * 思路:
  11. * 1.在键盘上输入5行数据,把这5行数据转换成2维数组
  12. * 2.计算每行成绩和,也存放在的当前的二维数组中
  13. * 3.把二维数组按成绩和由大到小排序
  14. * 4.把数组的数据写入到txt中
  15. *
  16. * @author 卢巧红
  17. *
  18. */
  19. public class Test1 {
  20.         public static void main(String[] args) throws IOException {
  21.                 Scanner scanner = new Scanner(System.in);
  22.                 System.out.println("请输入学生的姓名和三门课成绩(格式为:姓名,语文,数学,英语):");
  23.                 String[] score = new String[5];// 定义大小为5的数组,保存每一行的数据
  24.                 String[][] info = new String[5][5];// 声明2维数组来存放每条数据的每条记录
  25.                 String[][] newInfo = new String[5][5];//用于存放排序之后的记录
  26.                 for (int i = 0; i < 5; i++) {
  27. <b><i>                        score[i] = scanner.nextLine() + (",0");// 控制台输入的每行数据用,分割</i></b>
  28.                         info[i] = score[i].split(",");// 二维数据的每行数据即为控制台输入的每行数据
  29.                         int sum = (Integer.parseInt(info[i][1])
  30.                                         + Integer.parseInt(info[i][2]) + Integer
  31.                                         .parseInt(info[i][3]));// 求语数外的分数和
  32.                         info[i][4] = sum + "";// 分数和也保存在二维数组中
  33.                 }
  34.                 newInfo = Compare(info);
  35.                 SaveToTxt(newInfo);
  36.         }

  37.         // 把二维数组按照成绩和列排序
  38.         public static String[][] Compare(String[][] info) {
  39.                 String[] temp = new String[5];
  40.                 for (int i = 0; i < 4; i++) {
  41.                         for (int j = i + 1; j < 5; j++) {
  42.                                 // 从大到小排序
  43.                                 if (Integer.parseInt(info[i][4]) < Integer.parseInt(info[j][4])) {
  44.                                         temp = info[i];
  45.                                         info[i] = info[j];
  46.                                         info[j] = temp;
  47.                                 }
  48.                         }
  49.                 }
  50.                 return info;
  51.         }

  52.         // 把数据保存到txt中
  53.         public static void SaveToTxt(String[][] info) throws IOException {
  54.                 FileWriter fw = null;
  55.                 String path = "D:\\stu.txt";
  56.                     fw = new FileWriter(path);
  57.                         fw.write("姓名\t语文\t数学\t英语\t总分\r\n");
  58.                         for (int i = 0; i < 5; i++) {
  59.                                 for (int j = 0; j < 5; j++) {
  60.                                         fw.write(info[i][j] + "\t");
  61.                                 }
  62.                                 fw.write("\r\n");
  63.                         }
  64.                         fw.close();
  65.                 System.out.println("成绩保存到"+path+"文件中");
  66.         }
  67. }
复制代码
请问加粗加斜体的那行字为什么能实现 在控制台输入前5条数据时打回车到下一行,5条数据输入完之后打回车出结果呢?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2