Java - 通过从文本文件中选择某些数字来创建字符串

时间:2009-10-04 17:40:55

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

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

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

在此之后,我对使用哪种方法感到困惑。

我想设置一个条件语句,它将通过numbers,评估每一行(或数字1-31),如果符合某些条件,则将每个数字包含一个名为numbersonCard的字符串。

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

关于我可能使用哪些方法的任何建议?

3 个答案:

答案 0 :(得分:4)

计算机科学就是分解。将问题分解为较小的问题。

首先要做的事情是:您能阅读该文件并回复它吗?

接下来,您可以将每一行分成数字吗?

然后,您可以按照自己的意愿处理每个数字吗?

如果你可以解决问题,你会取得更快的进展。

我认为Java Almanac是示例代码段的最佳来源之一。也许它可以帮助你解决一些基础知识。

答案 1 :(得分:1)

基于duffymo的出色建议,您可能希望将问题分解为高级伪代码。关于这一点的好处是,您实际上可以将这些步骤作为注释写入代码中,然后将每个位解决为一个单独的问题。更好的是,如果你正确解决问题,你实际上可以将每个部分放在一个单独的方法中。

例如:

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

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

答案 2 :(得分:1)

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

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

hasNext()和nextInt()将使您免于从扫描程序获取字符串并且必须自己解析它。我不确定Scanner的默认分隔符是否会将Windows行尾CRLF解释为一个或两个分隔符。