我收到 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)