数据文件如下所示
12,234,123
123,452,622
(here is a empty line)
1,000,010
20,000
结果应该如下所示
12234123
123452622
sum: 125686745
product:1510334562...
1000010
20000
sum: 1020010
product: 20000200000
不能使用任何实用程序库,例如 java.math.BigDecimal javautil.LinkedList 等
- 我不知道如何在一行上显示每个数字
我的结果是这样的
12
234
123
但我需要将其显示在一行上
12234123
- 空格问题,每对数字之间有一个空行 我只能得到第一对数字,因为我的 while 语句仅在 line 不为空时才起作用。
如下所示:
while((Line = File.readLine())!= null)
不知道如何修改。
求和法和乘积法。希望有人能给我一些线索。
这是代码。 (空行问题已解决)
public static void main (String[] args){
if (args.length == 0)
System.out.println("No file specified.");
else{
FileReader theFile;
BufferedReader inFile;
String num1,num2;
try{
theFile = new FileReader(args[0]);
inFile = new BufferedReader(theFile);
while((num1 = inFile.readLine())!= null){
if(num1.length()==0){
}
else{
num2 = inFile.readLine();
num1.replace(",", "");
num2.replace(",", "");
System.out.println(num1);
System.out.println(num2);
}
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
最佳答案
好吧,我会解决你的两点,但你应该阅读 I/O here .
1) I don't know how to display each number on one row.
while ((line = file.readLine()) != null)
由于您正在逐行使用输入,因此您已经读取了整个数字。 String.replace(",", "")
方法将处理您的逗号。至于你的总和和乘积,像 adder 一样思考,使用 String
表示形式进行加法和乘法,就像手动操作一样。
2) There is a empty line between each pair of numbers. I only can get the first pair of numbers since my while statement works only when line is not null.
null
检查是针对 EOF
或文件结尾。根据 Javadocs BufferedReader ,你的空行实际上相当于 ""+ "\n"
,所以你实际上会读到一个空行。因此,只需检查是否 line.equals("")
并且什么也不做。
编辑:解决更新后的帖子
- 您需要避免资源泄漏并创建一个文件来传递给 文件阅读器。再看看适当的构造函数。
- 我进行了重构,以应对基本上有多个测试用例的事实
- 您不应该在逗号分隔符上分割,因为您想要单行输出,对吗?
- 最后,为了您的逻辑,请对 bignums、BigInteger 的实现方式进行一些研究,并尝试创建您自己的简单实现。
以下是已实现的 I/O 的所有修复。您应该阅读有关该主题的更多内容,但这将使您能够专注于 bignum 算法,我怀疑这就是本练习的重点。
private static String add(String num1, String num2) {
// implement
}
private static String multiply(String num1, String num2) {
// implement
}
try (
BufferedReader reader = new BufferedReader(new FileReader(new File(args[0])));
) {
String num1, num2;
while ((num1 = reader.readLine()) != null) {
num2 = reader.readLine(); // assumes your input is formatted correctly
num1.replaceAll(",", ""); // "delete" commas
num2.replaceAll(",", "");
System.out.printf("%s\n", num1);
System.out.printf("%s\n", num2);
System.out.printf("sum: %s\n", add(num1, num2));
System.out.printf("product: %s\n", multiply(num1, num2));
reader.readLine(); // consume blank line
}
} catch (IOException e) {
System.err.println(e.getMessage()); // error output
}
关于Java-从文件中读取大数对并用链表表示它们,得到每对的和与积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396842/