1

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

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

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

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

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

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

4

3 回答 3

4

计算机科学就是关于分解的。把你的问题分解成更小的问题。

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

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

那么,你能按照自己的意愿处理每个号码吗?

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

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

于 2009-10-04T18:01:03.720 回答
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 获取 String 并不得不自己解析它。不过,我不确定 Scanner 的默认分隔符是否会将 Windows 行尾 CRLF 解释为一个或两个分隔符。

于 2009-10-04T19:05:50.350 回答
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 引发的任何错误)、读取文件中的所有数字、确定给定数字是否符合您的标准的方法,等等。一个聪明的方法命名,你的代码会像伪代码一样读起来,使它在未来更易于维护。

于 2009-10-04T18:35:02.107 回答