【问题标题】:Java - Creating a string by selecting certain numbers from within a text fileJava - 通过从文本文件中选择某些数字来创建字符串
【发布时间】:2010-12-03 18:27:43
【问题描述】:

我有一个 .txt 文件,其中包含数字 1-31,名为 numbers。我已经设置了这样的扫描仪:

    cardCreator = new Scanner (new File ("numbers"));

在这之后,我有点困惑我可以使用哪些方法。

我想设置一个条件语句,它将通过 numbers, 评估每一行(或数字 1-31),并在每个数字符合特定条件时包含一个名为 numbersonCard 的字符串。

我可以想象这将如何工作(可能使用hasNext()nextLine() 或其他东西),但我仍然对 API 有点不知所措...

关于我可以使用哪些方法有什么建议吗?

【问题讨论】:

    标签: java methods conditional projects java.util.scanner


    【解决方案1】:

    计算机科学就是关于分解的。将您的问题分解为更小的问题。

    首先要做的事情是:您可以读取该文件并将其回显吗?

    接下来,你能把每一行分成几块吗?

    那么,你能按自己的意愿处理每一个数字吗?

    如果你能分解问题,你会取得更快的进步。

    我认为Java Almanac 是最好的示例 sn-ps 来源之一。也许它可以帮助您了解一些基础知识。

    【讨论】:

    • 非常真实。可能是我在 SO 中读过的最好的建议之一。
    【解决方案2】:

    要提供比 duffymo 和 Rob 给出的出色答案更具体的帮助,您的直觉是正确的。你可能想要这样的东西:

    cardCreator = new Scanner (new File ("numbers"));
    while (cardCreator.hasNextInt()) {
        int number = cardCreator.nextInt();
        // do something with number
    }
    cardCreator.close();
    

    hasNext() 和 nextInt() 将使您免于从 Scanner 获取 String 并不得不自己解析它。不过,我不确定 Scanner 的默认分隔符是否会将 Windows 行尾 CRLF 解释为一个或两个分隔符。

    【讨论】:

    • 我认为你做得对,只要回答问题。 OP必须感兴趣,否则不会通过披露压倒性的信息来制作问题。挖掘数百行文档,却发现某某已被“贬低”,而实际上可以有效地满足起步需求,但并没有完成很多工作。我什至从未使用过 Scanner,实际上尝试使用来自实际扫描仪的 JNI 来实现 Java 对象构造,以从 ocr 进行字符识别。 [我的对话者] 放弃了 JNI,因为 Ivor Horton 也这么说。
    【解决方案3】:

    根据 duffymo 的出色建议,您可能希望将问题分解为高级伪代码。这样做的好处是,您实际上可以在代码中将这些步骤编写为 cmets,然后将每个位作为一个单独的问题来解决。更好的是,如果您正确地分解问题,您实际上可以将每个部分放入一个单独的方法中。

    例如:

    // Open the file
    // Read in all the numbers
    // For each number, does it meet our criteria?
    // If so, add it to the list
    

    现在您可以以某种孤立的方式解决问题的每个部分。此外,您可以开始看到您可能会将其分解为可以打开文件(并处理 API 引发的任何错误)、读取文件中的所有数字、确定给定数字是否符合您的标准的方法,等等。一个聪明的方法命名,你的代码会像伪代码一样读起来,使它在未来更易于维护。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多