java -从文件中读取大数对并用链表表示,得到每对的和和积



数据文件如下图

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等。

  1. 我不知道如何在一行上显示每个数字

我的结果是

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。

    1)我不知道如何在一行中显示每个数字

    while ((line = file.readLine()) != null)

    由于您是逐行使用输入,因此您已经将整个数字读入。String.replace(",", "")方法将处理您的逗号。至于求和和乘积,就像一个加法器,用String表示来做加法和乘法,就像你用手做一样。

    2)每对数字之间有一个空行。我只能得到第一对数字,因为我的while语句只在line不为空时起作用。

    null检查是针对EOF,或文件结束。根据BufferedReader的Javadocs,空行实际上相当于"" + "n",因此您实际上将读取空行。所以只要检查line.equals(""),什么都不做。

    EDIT: Addressing Updated Post

    1. 您需要避免资源泄漏,并创建一个文件传递给FileReader。再看一下适当的构造函数。
    2. 我已经重构来处理你基本上有多个测试用例的事实
    3. 你不应该在逗号分隔符上分割,因为你想要单行输出,对吗?
    4. 最后,对于你的逻辑,做一些研究,BigInteger是如何实现的,并尝试创建自己的简单实现。

    这里是所有修复您的I/O实现。您应该阅读更多有关该主题的内容,但这将使您能够专注于bigum算法,我认为这是本练习的重点。

    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("%sn", num1);
            System.out.printf("%sn", num2);
            System.out.printf("sum: %sn",     add(num1, num2));
            System.out.printf("product: %sn", multiply(num1, num2)); 
            reader.readLine();              // consume blank line
        }
    } catch (IOException e) {
        System.err.println(e.getMessage()); // error output
    }
    

    相关内容

    • 没有找到相关文章

    最新更新