2 jrewin jrewin 于 2016.03.25 21:08 提问

求助!用Java读取dat文件并处理数据,输出! 10C

a.dat文件:
id,money
k001,5
k002,21
k003,30
k004,40
k002,20

b.dat文件:
id,money
k002,30
k005,49
k007,50

用java读取以上两个dat文件,统计相同id名下的money总和,并输出c.dat文件。

4个回答

StressedOut
StressedOut   2016.03.25 21:26

IO流,按行读取,字符串切割,map存储id和money,map中已经存在id则进行money累加,2个文件读取完成,输出map值到c.dat

jrewin
jrewin 回复StressedOut: 前辈,求完整代码…
一年多之前 回复
huixion
huixion   2016.03.26 00:17

把a.txt b.txt,c.txt 分别改为.dat就可以了

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Lianxi
{

static Map map=new HashMap();
public static void main(String[] args) throws IOException {

String line = null;
String a=null,a1 =null;
String b=null,b1 =null;

    BufferedReader in = new BufferedReader(new FileReader("F:\\a.txt"));
    while((line = in.readLine())!=null)
    {
        a=line.split(",")[0];
        b=line.split(",")[1];
       map.put(a, b);

    }

    BufferedReader in1 = new BufferedReader(new FileReader("F:\\b.txt"));
    while((line=in1.readLine())!=null)
    {      
            a1=line.split(",")[0];
            b1=line.split(",")[1];  
          if(a1.equals("id"))
          {       
          }
          else
          if(map.get(a1)!=null)
          {   b= (String) map.get(a1);
              map.remove(a1);
              int temp=Integer.parseInt(b1)+Integer.parseInt(b);
              map.put(a1, temp);  
          }
          else 
          {
              map.put(a1, b1);
          }
    }


    StringBuffer str = new StringBuffer();
    FileWriter fw = new FileWriter("F:\\c.txt", true);
    Set set = map.entrySet();
    Iterator iter = set.iterator();
    while(iter.hasNext()){
        Map.Entry entry = (Map.Entry)iter.next(); 
        str.append(entry.getKey()+" , "+entry.getValue()+"\r\n");
    }
    fw.write(str.toString());
    fw.close();
}       

}

huixion
huixion 回复jrewin: 都是JDK1.1的
一年多之前 回复
jrewin
jrewin 回复huixion: 前辈,我被要求必须用jdk1.4,是不是就用不了这个了?望指导!
一年多之前 回复
huixion
huixion   2016.03.26 10:12

发现写错了、、、
下面是正确的

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Lianxi
{

static Map map=new HashMap();
public static void main(String[] args) throws IOException {

String line = null;
String a=null,a1 =null;
String b=null,b1 =null;

    BufferedReader in = new BufferedReader(new FileReader("F:\\a.txt"));
    while((line = in.readLine())!=null)
    {
        a=line.split(",")[0];
        b=line.split(",")[1];

       if(map.get(a)!=null)
       {   b1= (String) map.get(a);
          map.remove(a);
          int temp=Integer.parseInt(b)+Integer.parseInt(b1);
          String temp1=String.valueOf(temp);
           map.put(a, temp1);  
       }
       else
       {
           map.put(a, b);   
       }
    }

    BufferedReader in1 = new BufferedReader(new FileReader("F:\\b.txt"));
    while((line=in1.readLine())!=null)
    {      
            a1=line.split(",")[0];
            b1=line.split(",")[1];  
          if(a1.equals("id"))
          {       
          }
          else
          if(map.get(a1)!=null)
          {   b= (String) map.get(a1);
              map.remove(a1);
              int temp=Integer.parseInt(b1)+Integer.parseInt(b);
             // String temp1=String.valueOf(temp);
              map.put(a1, temp);  
          }
          else 
          {
              map.put(a1, b1);
          }
    }


    StringBuffer str = new StringBuffer();
    FileWriter fw = new FileWriter("F:\\c.txt", true);
    Set set = map.entrySet();
    Iterator iter = set.iterator();
    while(iter.hasNext()){
        Map.Entry entry = (Map.Entry)iter.next(); 
        str.append(entry.getKey()+" , "+entry.getValue()+"\r\n");
    }
    fw.write(str.toString());
    fw.close();
}       

}

StressedOut
StressedOut 回复huixion: 代码写的不错,提个小建议加注释就更好了![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/79.gif)
一年多之前 回复
StressedOut
StressedOut 回复huixion: 代码写的不错,提个小建议加注释就更好了![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/79.gif)
一年多之前 回复
huixion
huixion 回复jrewin: 文件路径不用弄错了
一年多之前 回复
huixion
huixion 回复jrewin: 按照你给的那两个文件内容是可以的,你看一下你文件内容是不是那里没有用 “,”隔开了
一年多之前 回复
jrewin
jrewin Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 这是为什么?您那能运行?
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.03.30 11:25

Java读取、写入、处理Excel文件中的数据
java读取文件数据进行一些简单处理的例子
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!