java读取txt输出二维数组的问题..

有一个txt文档如下1234567一二1234567一二总数:6234890一234890二总数:3如何输出{1234567,6},{234890,3}就是过滤掉相同的行... 有一个txt文档 如下

1234567 一二
1234567 一二
总数: 6

234890 一
234890 二
总数: 3

如何输出{1234567,6},{234890,3} 就是过滤掉相同的行 保存数字 和总数。。万分感谢!!
展开
 我来答
JesChou
2011-05-20 · TA获得超过1431个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:383万
展开全部
要想过滤相同的行,就得记录已经读到的行

然后每次读到一行后,就判断此行的内容是否已经读到过了,是的话,就把次数+1,并丢弃此行
否的话就添加此行,并将此行的计数器置0

记录读到的内容可以用ArrayList<String> als=new ArrayList<String>();
计数器可以用ArrayList<Integer> alc=new ArrayList<Integer>();
添加新行的话,两个同时添加;修改计数器的话,只需在als中找出索引(indexOf(..)),然后修改alc中对应的数

输出的话,我就不说了。。。
更多追问追答
追问
可以麻烦写段代码给我参考一下吗?麻烦你了。初学,没什么概念啊~
“判断此行的内容是否已经读到过了”但是每一行内容是不同的。。只有最前面的数字是相同的。。
追答
public static void main(String[] args) throws Exception {
ArrayList als = new ArrayList();
ArrayList alc = new ArrayList();
BufferedReader br = new BufferedReader(new FileReader("e:/desktop/a.txt"));
String line = null;
while ((line = br.readLine()) != null) {
// 如果是空行或者首字符不是数字,就直接放弃此行
if (line.length() == 0 || !Character.isDigit(line.charAt(0)))
continue;
// 找到非数字在此行中的第一个位置
int ei = line.length();
for (int i = 0; i < line.length(); i++) {
if (!Character.isDigit(line.charAt(i))) {
ei = i;
break;
}
}
// 提取此行中的数字,仅从最前端开始截取
line = line.substring(0, ei);
int i = als.indexOf(line);
if (i == -1) {
// 还没读到这个数字
als.add(line);
alc.add(1);
} else {
// 已经读到这个数字
alc.set(i, alc.get(i) + 1);
}
}
br.close();

for (int i = 0; i < als.size(); i++) {
System.out.println(als.get(i) + "," + alc.get(i));
}
}
拿破仑正方形
2011-05-20 · 超过16用户采纳过TA的回答
知道答主
回答量:85
采纳率:100%
帮助的人:33.8万
展开全部
1、定义一个数组 String a[ ]
2、将txt每一行分别保存在 a[0],a[1]......a[n] 中
3、将数组a 进行遍历对比,再按需求连接成一个字符串

成功了就请加分!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式