永发信息网

Java IO流,怎样实现将inputFile中的内容读出,并以另一种格式写入到outputFile中?

答案:1  悬赏:20  手机版
解决时间 2021-02-22 22:47
请写出Java代码,实现以下功能:
接收两个类型为java.io.File的参数input,output。将input的内容读出、转换,按照下面要求的格式写入output。

input文件内容格式如下:
水果名,进货时间,进货数量
苹果,1月,200
香蕉,1月,100
桃子,1月,100
苹果,1月,60
苹果,2月,100
桃子,3月,50

output文件内容如下:
水果名,1月,2月,3月
苹果,260,100,0
香蕉,100,0, 0
桃子,100,0,50
最佳答案
import java.io.File;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Scanner;

public class whileshuzu
{
public static final String LINE = System.getProperty("line.separator");

public static void main(String[] args)
{
try
{
Scanner sc = new Scanner(new File("input.txt"));
String reg = "^[^,,]+[,,\\s]+\\d+月[,,\\s]+\\d+\\s*$";
HashMap<String, Integer> map = new HashMap<String, Integer>();
int max = Integer.MIN_VALUE;
String fruit = "";
while(sc.hasNextLine())
{
String line = sc.nextLine();
if(line.matches(reg))
{
String[] arr = line.split("[,,\\x20\t]+");
String key = arr[0] + "," + arr[1];
if(fruit.indexOf(arr[0]) == -1)
{
fruit += arr[0] + ",";
}
int month = Integer.parseInt(arr[1].replaceAll("\\D+$", ""));
max = max < month ? month : max;
int count = Integer.parseInt(arr[2]);
if(null == map.get(key))
{
map.put(key, count);
}
else
{
int last = map.get(key);
map.put(key, count + last);
}
}
}
sc.close();
String title = "水果名";
for(int i = 1; i <= max; i++)
{
title += "," + i + "月";
}
fruit = fruit.replaceAll(",$", "");
String result = "";
String[] fs = fruit.split(",");
for(int i = 0; i < fs.length; i++)
{
String tmp = fs[i];
for(int j = 1; j <= max; j++)
{
Integer c = map.get(fs[i] + "," + j + "月");
tmp += "," + (null == c ? 0 : c);
}
result += tmp + LINE;
}
FileWriter fw = new FileWriter("output.txt");
fw.write(title + LINE + result);
fw.flush();
fw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列岩石都有可能找到化石的一组是A. 页岩、
本科德语语言文学,国内考研能报考的除了德语
新元商店在什么地方啊,我要过去处理事情
1982年正月二十六是什么星座
干荔枝怎样吃
微信免打扰是不会弹出在第一界面了吗?
王之涣是唐朝诗人他的什么被后人称为什么诗人
信用卡在ATM机上是从磁卡的什么方向插入,磁卡
北京交通大学国家保密学院这个地址在什么地方
离开之前的最后一支舞用英语怎么说
已知直线y=-x+4与双曲线y=-x/3的一个交点坐标
三星 Galaxy Grand Prime玩王者荣耀卡怎么办
请问我是富二代吗?
睢宁县睢城镇红叶社区居民委员会怎么去啊,有
求手机号码,尾数为5556-或者是6665的手机尾
推荐资讯
七夕情人发了个红包,该怎么回复他呢?
鼓浪屿万石山风景名胜区管理委员会在什么地方
4岁小孩喝啤酒有什么坏处?
孟晨五金电器土产建材我想知道这个在什么地方
银行从业资格考试只考过公共基础会有成绩单吗
九华山风景区华兴山庄地址在什么地方,想过去
一佳洗衣怎么去啊,有知道地址的么
某滑坡拟采用抗滑桩治理,桩布设在紧靠第6条
高一数学,要过程,谢谢!
重庆江津石门有快递没有?
东江1号鱼厂家直销地址在哪,我要去那里办事
谁知道一本书《天生尤物》TXT 作者上官小仙?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?