使用扫描仪时,循环在1次旋转后结束

时间:2013-12-09 02:34:22

标签: java for-loop input java.util.scanner

我目前正在开发一个程序,用于检查文本文档中的每一行,并对其进行相同的修改。然而,for循环只循环一次而不是所需的5次。下面是代码中无效的部分。

//I think this part is correct but I decided to include it just in case.
Scanner infile = null;
try {
    infile = new Scanner(new File("solution.txt"));
} catch(FileNotFoundException e) {
    System.out.println(e);
    System.exit(0);
}

for(int i = 0; i < 5; i++);
{
    s = infile.nextLine();
    System.out.println(s);
    System.out.println("LOOP"); //Just a debug test
}
infile.close();

此代码的输出如下:

define 88 as INT
LOOP

它应该是:

define 88 as INT
LOOP
define 89 as INT
LOOP
define 90 as INT
LOOP
define 91 as INT
LOOP
define 92 as INT
LOOP

2 个答案:

答案 0 :(得分:3)

删除分号:

for(int i = 0; i < 5; i++);

is valid之后的代码本身,因此单独运行一次。

{
    s = infile.nextLine();
    System.out.println(s);
    System.out.println("LOOP"); //Test system out
}

答案 1 :(得分:0)

您需要在for循环结束时删除;

您使用的for循环代码

    for(int i = 0; i < 5; i++);
    {
        s = infile.nextLine();
        System.out.println(s);
        System.out.println("LOOP"); //Test system out
    }

等于以下代码:

    for (int i = 0; i < 5; i++) {

    }
    s = infile.nextLine();
    System.out.println(s);
    System.out.println("LOOP"); // Test system out

这就是为什么只从纯文本文件中读取第一行内容。

您最好使用 infile.hasNext()来检查是否有任何内容。然后阅读它。喜欢

    while (infile.hasNext()) {
        s = infile.nextLine();
        System.out.println(s);
        System.out.println("LOOP"); // Test system out
    }