gpt4 book ai didi

java - 用于输入文本文件的 DataInputStream?

转载 作者:行者123 更新时间:2023-12-01 07:41:07 24 4
gpt4 key购买 nike

我正在学习用 Java 进行读写,并且遇到了一个简单的练习。该程序从 2 个 txt 文件中读取,每个文件都包含行中的数字。它将每行数字相乘的结果写入输出文件。例如。 file 1 row 1 : 10,file 2 row 1: 2 ,程序应将 20 写入输出文件。我的代码似乎在某处丢失了一些东西。输出文件已创建,但未向其中写入任何内容。有什么想法吗?

import java.io.*;
import java.util.*;

class ReadWriteData
{
public static void main(String[] args) throws Exception
{

//create ouput file
PrintWriter output = new PrintWriter("output2.txt");

DataInputStream file1 = new DataInputStream(new FileInputStream(args[0]));
DataInputStream file2 = new DataInputStream(new FileInputStream(args[1]));

try
{

// read data from file
while (true)
{
double number1 = file1.readDouble();
double number2 = file2.readDouble();
double result = number1 * number2 ;
output.println(result);

}


}

catch (IOException e)
{
System.err.println("Error");
System.exit(1);
}

output.close() ;

}
}

最佳答案

这是一个可以使用 BufferedReader 的实现。

public static void main(String[] args) throws Exception {
//create ouput file
PrintWriter output = new PrintWriter("output2.txt");
BufferedReader file1 = new BufferedReader(new FileReader("numbers1.txt"));
BufferedReader file2 = new BufferedReader(new FileReader("numbers2.txt"));

try {
// read data from file
while (true) {
String number1AsString = file1.readLine();
String number2AsString = file2.readLine();
if (number1AsString == null || number2AsString == null) {
break;
}
double number1 = Double.parseDouble(number1AsString);
double number2 = Double.parseDouble(number2AsString);
double result = number1 * number2;
System.out.println("result:" + result);
output.println(result);
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
output.close();
file1.close();
file2.close();
}
}

编辑:您还可能希望模块化代码,例如创建有助于减少重复代码的方法。此外,您可能有兴趣查找 NumberFormatException,以防任何数字格式不正确或包含字母等。

private double readDoubleFromFile(BufferedReader file) throws IOException {
String numberAsString = file.readLine();
if (numberAsString == null) {
throw new IOException();
}
double number = Double.parseDouble(numberAsString);
return number;
}

关于java - 用于输入文本文件的 DataInputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com