永发信息网

跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中

答案:3  悬赏:0  手机版
解决时间 2021-03-28 23:19
  • 提问者网友:孤山下
  • 2021-03-28 04:50
跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中
最佳答案
  • 五星知识达人网友:行路难
  • 2021-03-28 05:16
【分析】:
把源文件里面的每行数据用split分成3个String,再把第二个String用spli分成2个String,e前面的String转换成double进行判断,大于0就返回1,小于0就返回0,等于0就返回-1。

周期问题可以这样解决:
for(int i=0;i line=br.readLine();
}

【源文件格式】:
0.000000000000e+000 0.0000e+000 2.2032e-005
1.000000000000e-007 -4.3368e-019 2.2032e-005
2.000000000000e-007 -4.3368e-019 2.2032e-005
4.000000000000e-007 -8.6736e-019 2.2032e-005
8.000000000000e-007 -2.3852e-018 2.2032e-005
1.600000000000e-006 -5.9631e-018 2.2032e-005
3.200000000000e-006 -2.0383e-017 2.2032e-005
6.400000000000e-006 -6.2992e-017 2.2032e-005
1.280000000000e-005 -2.0524e-016 2.2032e-005
2.280000000000e-005 -6.9898e-016 2.2032e-005
3.280000000000e-005 -1.6258e-015 2.2032e-005
4.280000000000e-005 -3.0612e-015 2.2032e-005
5.280000000000e-005 -4.9637e-015 2.2032e-005
6.280000000000e-005 -7.2800e-015 2.2032e-005
【结果文件】:
-1
1
1
1
1
1
1
1
1
1
1
1
1
1

【代码】:
package Exam;
import java.io.*;

public class Exam_TxtDisposal{
public static void main(String[] args){
Exam_TxtDisposal ed=new Exam_TxtDisposal();
String file1="f:\\111.txt";//读取的文件
String file2="f:\\222.txt";//写入的文件
ed.txtDisposal(file1, file2,0);
}
public void txtDisposal(String file1,String file2,int iCyc){//文件读写[源文件,结果文件,周期]
try{
FileReader fr=new FileReader(file1);//读文件
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter(file2);//写文件
PrintWriter pw=new PrintWriter(fw);
String line;
line=br.readLine();//按行读取
while(line!=null){
int iNum=workedLine(line);
pw.println(iNum);//按行写入
for(int i=0;i line=br.readLine();
}
}
pw.close();fw.close();
br.close();fr.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
System.out.println("==处理完毕!==");
}
public int workedLine(String line){//判断数字的正负
//每一行的格式:1.000000000000e-007 -4.3368e-019 2.2032e-005
String[] sLine1=line.split(" ");//把line分成3个String
String[] sLine2=sLine1[1].split("e");//把Channel_A分成2个String
double dNum=Double.valueOf(sLine2[0]);
if(dNum>0) return 1;//正数
if(dNum<0) return 0;//负数
return -1;//零
}
}
全部回答
  • 1楼网友:野慌
  • 2021-03-28 07:13
排版有问题。。。Channel_A的应该对正 0.0000e+000 的那列,读取判断e前面的数字,如第二行应读-4.3368
  • 2楼网友:廢物販賣機
  • 2021-03-28 05:48
选择读取数据的周期?这个用来干 嘛,对输出 结果有影响么?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯