目前正在上我的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之前跳过托架,这是我相信我在做的。
我不知道从哪里开始。
答案 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
。打电话给它。
如果您在阅读type
和itemPrice
后再次遇到完全相同的问题。
将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();
}