使用while循环来读取while循环中的文件

时间:2017-11-05 19:21:12

标签: java loops while-loop java.util.scanner clock

目前正在上我的Data Structures课程,我们将在下一个课程中使用一个队列。

我们获得了一个输入文件,例如:

10 324 Boots 32.33
11 365 Gloves 33.33
12 384 Sweater 36.33
13 414 Blouse 35.33

我要读取第一个int(这是一个时间单位)并将其作为我的时钟的参考,以便在后台运行。

我在这些方面做了一些事情:

Scanner infp = new Scanner(new File(FILE));
while (busy) {
    clock = 0;
    clock += clockCount++;

    while (infp.hasNext()) {
        timeEntered = infp.nextInt();
        infp.nextLine();

        System.out.println(timeEntered);
        busy = true;

        if (timeEntered == clock) {
            itemNum = infp.nextInt();
            type = infp.nextLine();
            itemPrice = infp.nextDouble();  
        }
    }
}

问题是,当我运行它时,我收到'InputMismatchException'错误。我知道你需要在String之前跳过托架,这是我相信我在做的。

我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

所以给出了这些专栏:

10 324 Boots 32.33
11 365 Gloves 33.33
12 384 Sweater 36.33
13 414 Blouse 35.33

对于每一行,您将第一列读入timeEntered。 然后你做infp.nextLine(),这是一个错误。 当您拨打nextLine时,扫描程序将读取当前行中未读的所有内容,直到结束。 这意味着您无法读取其他列值。 但是你需要它们。因此,当您仍希望处理某一行的值时,请不要致电nextLine。打电话给它。

如果您在阅读typeitemPrice后再次遇到完全相同的问题。

while (infp.hasNext())替换为:

while (infp.hasNextLine()) {
    int timeEntered = infp.nextInt();

    System.out.println(timeEntered);
    busy = true;

    if (timeEntered == clock) {
        itemNum = infp.nextInt();
        type = infp.next();
        itemPrice = infp.nextDouble();
    }
    infp.nextLine();
}