我有一个.txt文件,其中包含数字1-31,名为numbers
。我已经设置了这样的扫描仪:
cardCreator = new Scanner (new File ("numbers"));
在此之后,我对使用哪种方法感到困惑。
我想设置一个条件语句,它将通过numbers,
评估每一行(或数字1-31),如果符合某些条件,则将每个数字包含一个名为numbersonCard
的字符串。
我可以想象这是如何工作的(可能使用hasNext()
或nextLine()
或其他东西),但我仍然对API有点不知所措......
关于我可能使用哪些方法的任何建议?
答案 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解释为一个或两个分隔符。