题目描述:假设已经有一个文本文件中存放着职工的工资记录。每个职工的记录包含姓名、工资、津贴三项。 每条记录可以存放于一行(三项之间的间隔符可以自己决定),也可以将每条记录的三项依次分别存放在 文本文件中的每一行。请设计一个程序,可以让用户选择打开这个文件查看其内容,并可以让用户选择 把每个职工的工资增加 10%之后又存回原来的文件。注意,职工工资记录的条数可能成百上千条甚至更多, 要能通过你所设计的程序,批量地一次性修改所有职工工资记录。
对于我这菜鸡来说只能实现简简单单的了,如果有大神有啥改进的意见也可以滴滴我;文件的创建是这样的:第一列是名字,第二列是工资,第三是津贴
这是内容:
结果为:(第三个居然来了个这么多个小数点)
代码:
package 加工资后的文件;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
public class AfterEditeFile {
public static void main(String args[]) {
try {
File f = new File("D:\\began.txt");//原始的工资放在这
RandomAccessFile in = new RandomAccessFile(f,"rw");//处理后的工资放在这
FileOutputStream out =new FileOutputStream("D:\\result.txt");
float chenglezhihou;//用于存储加倍了之后的工资
int i;
byte b[] = new byte[100];
String read = in.readLine();
while(read != null)
{
//将汉字国际化
b = read.getBytes("iso-8859-1");
String a= new String(b);
String kongge = " ";//用于输出到文件后每一个数据后边都加个空格
//正则表达式
String s[];
s=a.split(" "); //以空格来作为分割
for( i=0;i<s.length;i++)
{
if(i == 0)//第一列为名字
{
out.write(s[i].getBytes());
out.write(kongge.getBytes());//写入之后再写入几个空格隔开(下同)
}
else if(i == 1) //第二列为工资
{
chenglezhihou = Float.parseFloat((String) s[i]) *1.1f;//工资加倍
out.write((chenglezhihou+"").getBytes());
out.write(kongge.getBytes());
}
else
{
out.write(s[i].getBytes());
out.write(kongge.getBytes());
}
}
out.write('\r');//在每行的结尾来个换行符号
out.write('\n');
read = in.readLine();
}
out.close();
in.close();
}
catch(IOException e){
System.out.println("ERROE"+e);
}
}
}