编写一个应用程序,从文件a.txt中读取数据,对每一行的数据进行筛选出数字字符,并对其进行求和与求平均值,并将计算结果追加在每行的行末,输出到文件b.txt中。结果示例如下:
a.txt:
gh56werfre35jh 67vb 34dg
56ghnmb lji34 uioj59 lkj34 98 jlkj48
78rt89,[96 45
b.txt:
gh56werfre35jh 67vb 34dg sum=192.0,average=48.0
56ghnmb lji34 uioj59 lkj34 98 jlkj48 sum=329.0,average=54.833333333333336
78rt89,[96 45 sum=308.0,average=77.0
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class Example10_7 {
public static void main(String args[]) {
File fRead = new File("F:/面对对象分析与设计","a.txt");
File fWrite = new File("F:/面对对象分析与设计","b.txt");
try{ Writer out = new FileWriter(fWrite);
BufferedWriter bufferWrite = new BufferedWriter(out);
Reader in = new FileReader(fRead);
BufferedReader bufferRead =new BufferedReader(in);
String str = null;
while((str=bufferRead.readLine())!=null) {
String regex="\\D+";
String[] n2=str.split(regex);
double sum=0;
int p=0;
for(int j=0;j<n2.length;j++){
if(!"".equals(n2[j])){
sum = sum+Double.parseDouble(n2[j]);
p++;
}
}
String s2=(str+" 和: "+sum+" "+"平均值:"+(sum/p));
bufferWrite.write(s2);
bufferWrite.newLine();
}
bufferWrite.close();
out.close();
in = new FileReader(fWrite);
bufferRead =new BufferedReader(in);
String s=null;
System.out.println(fWrite.getName()+"内容:");
while((s=bufferRead.readLine())!=null) {
System.out.println(s);
}
bufferRead.close();
in.close();
}
catch(IOException e) {
System.out.println(e.toString());
}
}
}
运行结果: