【问题标题】:How to multiply numbers from a text file using JAVA [closed]如何使用 JAVA 将文本文件中的数字相乘 [关闭]
【发布时间】:2013-12-05 19:38:03
【问题描述】:

我正在尝试使用 JAVA 将文本文件中的数字相乘,但不知道如何。

4
12 4
16 8
14 1
12 8

第一行的第一个数字表示文档中有多少人(第 2 行“12 4”是第一个人,“12 8”是最后一个人。)

4 (number of employees)
32 (hours employees have worked) 8 (wage per hour)
38 6
38 6
16 7

我试图找出 Java 如何跳过第 1 行,读取第 2 行并将这两个数字相乘,然后对其他行执行相同操作。

谁能解释一下我是怎么做到的?

干杯!

【问题讨论】:

  • 向我们展示一些努力怎么样。你试过什么?
  • 即使是新手也可以投入一点工作。
  • 谷歌为您服务
  • 如何使用 List 来存储从文件中读取的数据。如果它是一个固定长度的平面文件,使用索引进行检索也可以帮助您获取第 n 个位置的元素。只是一个建议。
  • @user3071724 尝试通过Java input file loop。这里已经做了类似的事情。

标签: java


【解决方案1】:

这里有你需要的所有东西:

  1. 读取文件:Java: How to read a text file
  2. 转换为整数:How to convert a String to an int in Java?
  3. 乘法:使用* 运算符

【讨论】:

    【解决方案2】:

    假设您已将其作为家庭作业分配,并且您在课堂上没有专心听讲。学习编程的关键是将任务分解为可管理的任务。

    在您的情况下,编写一个程序来读取输入文件并回显输出。一旦你拥有了它,你就是其中的一部分。

    接下来,将数字放入整数变量中。这将涉及铸造。

    然后执行该数学运算并输出输出。

    通过执行小任务,问题变得容易得多。

    【讨论】:

      【解决方案3】:

      很遗憾,我不太了解您的标准,但您似乎能够理解公式,这就是您所需要的。我建议使用 BufferedReader 和 FileReader 从文件中获取文本。从那里开始解析空格周围的字符串是个好主意(有一种方法),然后您可以将它们转换为整数。希望这能让您走上正确的道路。

      【讨论】:

        【解决方案4】:

        你肯定需要首先阅读整个编程,因为这应该是你应该能够回答的基本问题之一。

        我可以给你一个粗略的草图:

        1. 在“文档”所在的位置之外构造一个File 对象。
        2. 阅读输入,对于新手来说,我建议使用 Scanner 类。
        3. 读第一个IntegerLine,保存这个号码。
        4. 阅读下面一对Integers 或Lines。
        5. 将读取数相乘。
        6. 输出乘法结果。

        您可能还想检查一些其他问题:

        • 您的程序是否会因输入错误而中断?
        • 如果输入错误,您的程序是否应该继续?

        在阅读文档中的Integers 或Lines 时,您应该考虑这些因素。

        【讨论】:

          【解决方案5】:

          我发现您在使用 BufferedReader 时遇到了问题。所以为了避免类型转换的开销,你可以考虑使用Scanner。 在你的情况下,

          Scanner scanner = new Scanner ("Path to your file with backslash characters escaped");
          int myNumber = scanner.nextInt();
          

          它将直接将文件中的数字分配给您的变量。

          【讨论】:

            【解决方案6】:
            1. 创建扫描仪来读取文件
            2. 跳过第一行
            3. 遍历所有数字
            4. 数字对相乘
            5. 用这些数字做点什么
                import java.io.File;
                import java.io.FileNotFoundException;
                import java.util.Scanner;
            
                public class Test {
                    public static void main(String[] args) throws FileNotFoundException {
                        // 1. Create a scanner to read the file
                            Scanner file = new Scanner(new File("textfile.txt"));
                        // 2. Skip the first line
                            file.nextLine();
                        // 3. Iterate over all the numbers
                            while(file.hasNextInt()) {
                                int hours = file.nextInt();
                                int wagePerHour = file.nextInt();
                        // 4. Multiply number pairs
                                int totalWage = hours * wagePerHour;
                        // 5. Do something with those numbers
                                <do something with the numbers>
                            }
                    }
                }
            

            【讨论】:

            • 跳过第一行似乎不是 OP 想要的。想象一下,应用程序将来需要做一些其他事情,而不是输出数据。如果允许程序解析未指定的(超出 number_of_employee_count 个输入)输入,则可能会弹出一整套错误。
            • “我试图找出 Java 如何跳过第 1 行,读取第 2 行并将两个数字相乘,然后对其他行执行相同的操作。”我假设这些数字将在他们自己的文件中,特别是因为这看起来很像一个教育任务。
            • 对不起,我的错,我还没读过。虽然答案现在是 OP 想要的,但我仍然认为这样做是一种不好的做法。
            【解决方案7】:

            这将跳过第一行并打印出每一行的相乘值。这是假设您将文件作为命令行参数传递。

            import java.util.Scanner;
            import java.io.File;
            import java.io.FileNotFoundException;
            
            public class Multiply{
                public static void main(String[] args) throws FileNotFoundException{
                    File file = new File(args[0]);
            
                    Scanner sc = new Scanner(file);
            
                    // skip the first line
                    sc.nextLine();
            
                    int num_people;
                    int hours;
                    int total;
            
                    while(sc.hasNext()){
                        num_people = sc.nextInt();
                        hours = sc.nextInt();
            
                        total = num_people * hours;
                        System.out.println(total); 
                    }
                }
            }
            

            【讨论】:

            • 跳过第一行不是一个好方法。这个数字是有原因的,请参阅我对@quantumkayos 的评论了解更多信息。
            猜你喜欢
            • 1970-01-01
            • 2017-10-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多