java读取txt输出二维数组的问题..
有一个txt文档如下1234567一二1234567一二总数:6234890一234890二总数:3如何输出{1234567,6},{234890,3}就是过滤掉相同的行...
有一个txt文档 如下
1234567 一二
1234567 一二
总数: 6
234890 一
234890 二
总数: 3
如何输出{1234567,6},{234890,3} 就是过滤掉相同的行 保存数字 和总数。。万分感谢!! 展开
1234567 一二
1234567 一二
总数: 6
234890 一
234890 二
总数: 3
如何输出{1234567,6},{234890,3} 就是过滤掉相同的行 保存数字 和总数。。万分感谢!! 展开
2个回答
展开全部
要想过滤相同的行,就得记录已经读到的行
然后每次读到一行后,就判断此行的内容是否已经读到过了,是的话,就把次数+1,并丢弃此行
否的话就添加此行,并将此行的计数器置0
记录读到的内容可以用ArrayList<String> als=new ArrayList<String>();
计数器可以用ArrayList<Integer> alc=new ArrayList<Integer>();
添加新行的话,两个同时添加;修改计数器的话,只需在als中找出索引(indexOf(..)),然后修改alc中对应的数
输出的话,我就不说了。。。
然后每次读到一行后,就判断此行的内容是否已经读到过了,是的话,就把次数+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));
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询