我收到 java.util.NoSuchElementException 错误。我们收到此错误的原因如下。
- 如果我们在读取文件之前不检查文件是否有下一行,那么它会在读取最后一行后抛出异常,因为它正在尝试读取不存在的行。
- 文件格式乱了
我认为我正在使用的文件的格式是正确的,并且在阅读之前我也在检查下一行,但我仍然收到错误消息。
当我使用 print 语句调试它时,它会打印所有行并java.util.NoSuchElementException
在读取最后一行后抛出错误。
请帮帮我
这是代码:
public static void InterpretMessageFromFile() throws FileNotFoundException{
File inputfile = new File("filepath");
Scanner reader = new Scanner(inputfile);
try {
while (reader.hasNextLine()) {
String MessageType = reader.next();
int IsAdd = MessageType.compareToIgnoreCase("A");
int IsCancel = MessageType.compareToIgnoreCase("X");
int IsDelete = MessageType.compareToIgnoreCase("D");
int IsExecute = MessageType.compareToIgnoreCase("E");
int IsReplace = MessageType.compareToIgnoreCase("U");
//if the type of order is add order to existing Order Book
if (IsAdd == 0) {
String retrieve_ts = reader.next();
int ts = Integer.parseInt(retrieve_ts);
String retrieve_id = reader.next();
int id = Integer.parseInt(retrieve_id);
String or_side = reader.next();
String retrieve_share = reader.next();
int share = Integer.parseInt(retrieve_share);
String retrieve_price = reader.next();
int price = Integer.parseInt(retrieve_price);
System.out.println("Add Order : Id is " + id );
AddOrderToExistingBook.AddNewOrder(id, ts, or_side, share, price);
}
//if it is cancel order
if (IsCancel == 0){
String retrieve_ts = reader.next();
int ts = Integer.parseInt(retrieve_ts);
String retrieve_id = reader.next();
int id = Integer.parseInt(retrieve_id);
System.out.println("Cancel Order : Id is " + id + " time stamp is : " + ts );
CancelOrder.CancelPartOfOrder(id, ts);
}
}
}
}
finally {
reader.close();
}
}
例外(从评论中复制):
在 OrderBook.InterpretOrderBookUpdateMessage.InterpretMessageFromFile(InterpretOrde rBookUpdateMessage.java:20) 在 OrderBook.MainMethod.main(MainMethod.java:50)