黑马程序员技术交流社区
标题:
数组分割问题
[打印本页]
作者:
luqh
时间:
2015-3-22 21:05
标题:
数组分割问题
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 luqh
*
*/
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><u><font color="#ff0000"> score[i] = scanner.nextLine() + (",0");// 控制台输入的每行数据用,分割</font></u></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+"文件中");
}
}
复制代码
请问 红字字体为什么要用,0f=分割呢? 用\怎么会报错呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2