java读取文件并对内容进行排序直接输出结果

文件内容是idheadachemuscle-paintemperatureflue1yesyesnormalnoe2yesyeshighyese3yesyesveryhi... 文件内容是
id headache muscle-pain temperature flu
e1 yes yes normal no
e2 yes yes high yes
e3 yes yes very high yes
e4 no yes normal no
e5 no no high no
e6 no yes very high yes
e7 yes no high yes
e8 no yes normal no
e9 yes yes normal yes
e10 no no high yes
要求输出结果为
id headache muscle-pain temperature flu
e1 yes yes normal no
e2 yes yes high yes
e3 yes yes very high yes
e7 yes no high yes
e9 yes yes normal yes
e4 no yes normal no
e5 no no high no
e6 no yes very high yes
e8 no yes normal no
e10 no no high yes
谢谢大神!!
在线等啊~~~
展开
 我来答
fuhaiwei
推荐于2016-11-25 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1386万
展开全部
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
File file = new File("data.txt");
List<String> list = new ArrayList<>();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while (br.ready()) {
list.add(br.readLine());
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
for (int i = list.size() - 1; i > 1; i--) {
for (int j = 1; j < i; j++) {
String[] split1 = list.get(j + 1).split("\t");
String[] split2 = list.get(j).split("\t");
if (split1[1].compareTo(split2[1]) > 0) {
String temp = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, temp);
}
}
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
更多追问追答
追问
谢谢,可以输出,能否帮我把后面的内容与第一行对齐么?我弄了好久对不齐
追答

对齐不太容易,我试试吧

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
File file = new File("data.txt");
List<String> list = new ArrayList<>();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while (br.ready()) {
list.add(br.readLine());
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
for (int i = list.size() - 1; i > 1; i--) {
for (int j = 1; j < i; j++) {
String[] split1 = list.get(j + 1).split("\t");
String[] split2 = list.get(j).split("\t");
if (split1[1].compareTo(split2[1]) > 0) {
String temp = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, temp);
}
}
}
for (int i = 0; i < list.size(); i++) {
String[] split = list.get(i).split("\t");
System.out.printf("%-8s%-16s%-16s%-16s%-8s\n",
split[0], split[1], split[2], split[3], split[4]);
}
}
}
匿名用户
2014-07-08
展开全部
行排序直接输出结果
10 分钟前StarのLight | 分类:JAVA相关 | 浏览9次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式