java - BookingApp 中的 ClassCastException

标签 java exception casting invoke classcastexception

我在以下位置收到 ClassCastException:

RVBooking rvbooking = (RVBooking) bookingList.get(iweight);

我想存储用户的车辆重量输入并调用 recordWeight() 方法。抱歉,如果我没有解释清楚。提前致谢。

堆栈跟踪

FerryBookingSystem [Java Application]   
    bookingSystem.FerryBookingSystem at localhost:51019 
        Thread [main] (Suspended (exception ClassCastException))    
            FerryBookingSystem.recordVehicleWeight() line: 144  
            FerryBookingSystem.main(String[]) line: 191 
    C:\Program Files\Java\jre7\bin\javaw.exe (16/05/2013 12:42:10 AM)   

预订异常

class BookingException extends Exception{
   String message;
   String IDs;

   public BookingException(String message){
      this.message = message;
   }
   public BookingException(String message, String IDs){
      this.message = message;
      this.IDs = IDs;
   }
   public String getIDs(){
      return IDs;
   }
   public String getMessage(){
      return message;
   }
}

FerryBookingSystem 类

public class FerryBookingSystem {
    private static ArrayList<VehicleBooking> bookingList = new ArrayList<VehicleBooking>();
    private static ArrayList<RVBooking> rvbookingList = new ArrayList<RVBooking>();
    private static Scanner userInput = new Scanner (System.in);


    public static int bookingIDExists(String IDs){
       if (bookingList.size() == -1){
             return -1;
       }
          for (int i = 0; i < bookingList.size(); i++){
             if(bookingList.get(i).getbookingID().equals(IDs)){
                return i;
             }
          }
          return -1;
       } 
    public static int rvbookingIDExists(String IDs){
       if (rvbookingList.size() == -1){
          return -1;
       }
          for(int i = 0; i < rvbookingList.size(); i++){
             if(rvbookingList.get(i).getbookingID().equals(IDs)){
                return i;
             }
          }
          return -1;
    }
public static boolean recordVehicleWeight(){
   String booking_ID;
   double weight = 0;
   int iweight = 0;
   System.out.print("Please enter the booking ID: ");
   booking_ID = userInput.nextLine();
   if(bookingIDExists(booking_ID) != -1){
      if(rvbookingIDExists(booking_ID) != 1){
        RVBooking rvbooking = (RVBooking) bookingList.get(iweight);
         System.out.print("Please enter the weight of the vehicle: ");
         weight = userInput.nextDouble();
         iweight = (int)weight;
         rvbooking.recordWeight(iweight);
         return true;
      }
      else{
         System.out.println("Error - cannot record weight for vehicle booking!");
         return false;
      }
   }
   else{
      System.out.println("The booking ID does not exist, Please try again.");
      return false;
   }
}

public static void main (String [] args) throws IOException{
    char user;
    do{
    System.out.println("**** Ferry Ticketing System ****");
    System.out.println(" A   -   Add Vehicle Booking");
    System.out.println(" B   -   Add Recreational Vehicle Booking");
    System.out.println(" C   -   Display Booking Summary");
    System.out.println(" D   -   Update Insurance Status");
    System.out.println(" E   -   Record Recreational Vehicle Weight");
    System.out.println(" F   -   Compile Vehicle Manifest");
    System.out.println(" X   -   Exit");
    System.out.print("Enter your selection: ");
    String choice = userInput.nextLine().toUpperCase();
    user = choice.length() > 0 ? choice.charAt(0) : '\n';
    if (choice.trim().toString().length()!=0){
    switch (user){
        case 'A':
            addVehicleBooking();
            break;
        case 'B':
           addRecreationalVehicleBooking();
            break;
        case 'C':
           displayBookingSummary();
            break;
        case 'D':
           updateInsuranceStatus();
            break;
        case 'E':
           recordVehicleWeight();
            break;
        case 'F':
            break;
        case 'X':
            break;
        default:
            break;
            }
    }
    }while(user!='X');
}

}

最佳答案

您正在尝试将 RVBooking 类型转换为 VehicleBooking 列表中的对象

关于java - BookingApp 中的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16568171/

相关文章:

silverlight - 更新 ObservableCollection 导致 "The Parameter is incorrect"异常

c++ - float 减少 1

java - 将 ResultSet 读入 JTable(在不同的类上)

java - 尝试使用 ical4j 解析 ical 文件,说明属性后出现换行问题

java - Gradle 公司母公司

java - 使用 Class.forName 加载类时出现 ClassNotFoundException

java - 刷新 Java 参数

java - 在系统检查异常之前,如何允许输入三个整数,后跟一个空格和一个单词?

c++ - C++ 中的 cast 属性

Java BlockingQueue<Runnable> 不可转换类型