我得到了下面的一段代码,它不断给我错误。这个特定的错误是“这样的元素异常”。我把一个hasNext()检查,以确保这不会发生,但我仍然得到错误。该错误也指包含String kind = sc.next()的行;这样的元素异常没有明显的原因
public static Meter load(Scanner sc) {
MeterNumber meterNumber = MeterNumber.fromString(sc.nextLine());
while (sc.hasNext()) {
int n = sc.nextInt();
sc.nextLine();
Tariff[] tariffs = new Tariff[n];
for (int i = 0; i < n; i++) {
String kind = sc.next();
sc.nextLine();
if (kind.equals("P")) {
tariffs[i] = PeakTariff.PEAK_TARIFF;
} else if (kind.equals("O")) {
tariffs[i] = OffPeakTariff.OFF_PEAK_TARIFF;
}
}
return new Meter(meterNumber, tariffs);
}
return null;
}
我有一个主要方法,通过它我试图调用上述方法。
public class Testt {
public static void main(String[] args) {
try {
Scanner sc1 = new Scanner(new java.io.File("Readings.txt"));
Meter.load(sc1);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
这是一种输入的,我有:
937 216 316 3 O 1041.1
531 481 889 2 P 788.5
错误。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Meter.load(Meter.java:29)
at Testt.main(Testt.java:19)
在此先感谢
你能提供几行例外吗?在哪一行? – Dmytro 2014-11-03 11:09:57
@Dmytro我编辑了一个包含错误 – lolian 2014-11-03 11:12:35
您的文件格式与您的代码不符。首先,你的代码不断地调用'sc.nextLine',但是你的文件格式在每个数字后都没有新的行。 – 2014-11-03 11:18:42