Java 在txt文件中查找整数和浮点数
我有一个简单的代码问题,不知道怎么做; 我有3个txt文件。 第一个txt文件如下所示:Java 在txt文件中查找整数和浮点数,java,file,txt,Java,File,Txt,我有一个简单的代码问题,不知道怎么做; 我有3个txt文件。 第一个txt文件如下所示: 1 2 3 4 5 4.5 4,6 6.8 8,9 1 3 4 5 8 9,2 6,3 6,7 8.9 我想从这个txt文件中读取数字,并将整数保存到一个txt文件中,然后浮动到另一个txt文件中 我的代码: import java.io.*; 公共班机{ 公共静态void main(字符串[]args)引发IOException{ FileInputStream fstream=新的FileInputS
1 2 3 4 5 4.5 4,6 6.8 8,9
1 3 4 5 8 9,2 6,3 6,7 8.9
我想从这个txt文件中读取数字,并将整数保存到一个txt文件中,然后浮动到另一个txt文件中
我的代码:
import java.io.*;
公共班机{
公共静态void main(字符串[]args)引发IOException{
FileInputStream fstream=新的FileInputStream(“C:\\…\\t.txt”);
DataInputStream in=新的DataInputStream(fstream);
BufferedReader br=新的BufferedReader(新的InputStreamReader(in));
FileWriter ostream=newfilewriter(“C:\\…\\t2.txt”);
BufferedWriter out=新的BufferedWriter(ostream);
FileWriter ostream2=新的FileWriter(“C:\\Users\\…\\t3.txt”);
BufferedWriter out2=新的BufferedWriter(ostream2);
字符串str=br.readLine();
char ch;
对于(int i=0;i假设,
也是一个十进制分隔符
,则可以统一此字符(将,
替换为
)
static void readAndWriteNumbers(字符串inputFile、字符串intNums、字符串dblNums)引发IOException{
//使用StringBuilder分别收集int和double数字
StringBuilder ints=新的StringBuilder();
StringBuilder dbls=新的StringBuilder();
Files.lines(path.get(inputFile))//字符串流
.map(str->str.replace(',',')//统一十进制分隔符
.map(str->{
Arrays.stream(str.split(\\s+)).forEach(v->{//将每一行拆分为令牌
如果(v.包含(“.”){
if(dbls.length()>0&&!dbls.toString().endsWith(System.lineSeparator()){
dbls.append(“”);
}
附加(v);
}
否则{
if(ints.length()>0&&!ints.toString().endsWith(System.lineSeparator())){
ints.追加(“”);
}
附加说明(v);
}
});
return System.lineSeparator();//返回新行
})
.forEach(s->{ints.append(s);dbls.append(s);});//在结果中保留行
//使用字符串生成器中的内容编写文件
试一试(
FileWriter intWriter=新的FileWriter(intNums);
FileWriter dblWriter=新的FileWriter(dblNums);
) {
intWriter.write(ints.toString());
dblWriter.write(dbls.toString());
}
}
//试验
读写枚举器(“test.dat”、“ints.dat”、“dbls.dat”);
输出
//ints.dat
1 2 3 4 5
1 3 4 5 8
// dbls.dat
4.5 4.6 6.8 8.9
9.2 6.3 6.7 8.9
您可以通过以下简单步骤完成此操作:
当您读取一行时,将其拆分为空白并获得一个令牌数组
在处理每个令牌时,
- 修剪任何前导和尾随空格,然后将
,
替换为
- 首先检查令牌是否可以解析为
int
。如果可以,将其写入outInt
(整数的写入器)。否则,检查令牌是否可以解析为float
。如果可以,将其写入outFloat
(浮点的写入器)。否则,忽略它
演示:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader in = new BufferedReader(new FileReader("t.txt"));
BufferedWriter outInt = new BufferedWriter(new FileWriter("t2.txt"));
BufferedWriter outFloat = new BufferedWriter(new FileWriter("t3.txt"));
String line = "";
while ((line = in.readLine()) != null) {// Read until EOF is reached
// Split the line on whitespace and get an array of tokens
String[] tokens = line.split("\\s+");
// Process each token
for (String s : tokens) {
// Trim any leading and trailing whitespace and then replace , with .
s = s.trim().replace(',', '.');
// First check if the token can be parsed into an int
try {
Integer.parseInt(s);
// If yes, write it into outInt
outInt.write(s + " ");
} catch (NumberFormatException e) {
// Otherwise, check if token can be parsed into float
try {
Float.parseFloat(s);
// If yes, write it into outFloat
outFloat.write(s + " ");
} catch (NumberFormatException ex) {
// Otherwise, ignore it
}
}
}
}
in.close();
outInt.close();
outFloat.close();
}
}
请描述您的代码有什么问题。示例中的逗号是分隔符还是十进制逗号,6,7与6.7或6和7相同?文件是否也只能有数字或字母?是否所有整数都是数字,或者是否大于9?(看起来是一个好的实践问题)6,7和6.7是一样的,文件只能有数字,整数可以大于9;很抱歉这么不精确,这段代码不起作用,我也不知道why@MarekOS-我已测试正常工作。如果解决了问题,您可以在下面对此代码进行注释,确认相同。感谢您的帮助。您能告诉我在何处粘贴到f的路径吗iles?路径作为字符串传递给读写枚举器(String inputFile、String intNums、String dblNums)
,第一个参数是输入文件的路径,另外两个是输出的路径。您是天才,谢谢:)