2013-04-08 79 views
-2

我得到的String.charAt(INT)的調試錯誤行:不適用於行
ch = Ach.charAt(0);Switch語句 - 的charAt

char ch; 
String Ach;  
Scanner input = new Scanner(System.in); 
printvehicleMAKE(services, input); 

    do{ 
     System.out.println("\n Service Item Recording Feature"); 
     System.out.println("  ------------------------------"); 
     System.out.println("\n\n A - Record Part Details"); 
     System.out.println("\n B - Add Labour Hours"); 
     System.out.println("\n X - Exit service item recording feature"); 
     System.out.print("\n\nEnter your selection: "); 
     Ach = input.nextLine().toUpperCase(); 
     ch = Ach.charAt(0); 
     switch(ch){ 
      case 'A': 
       System.out.print("Enter registration number of vehicle: "); 
       String inputREGO = input.nextLine(); 
       boolean flag = false; 
       for(int i=0; i<6; i++){ 
        if(inputREGO.equalsIgnoreCase(services[i].getregoNUMBER())){ 
         System.out.print("Enter Part Description: "); 
         String parts = input.nextLine(); 
         System.out.print("Enter Part Cost: "); 
         Double cost = input.nextDouble(); 
         services[i].addPARTDETAILS(parts, cost); 
         flag = true; 
        } 
       } 
       if(!flag) 
        System.out.println("No registration number were found in the system."); 

       break; 
      case 'B' : 
       break; 
      case 'X' : 
       System.out.println("Exiting system......"); 
       break; 
      default: System.out.println("Error - invalid selection entered!"); 
      break; 
     } 
    }while(ch!='X'); 

public static void printvehicleMAKE(ServiceAppointment[] services, Scanner 
     input){ 
    System.out.print("Enter vehicle make: "); 
    String make = input.nextLine(); 
    boolean flag = false; 
    for (int i=0;i<6;i++){ 
     if (services[i].getvehicleMAKEMODEL().indexOf(make) != -1){ 
      System.out.printf("\n%-10s%-8s%10s", services[i].getregoNUMBER(), 
        services[i].getbuildYEAR(), services[i].getvehicleMAKEMODEL()); 
        flag=true; 
     } 
    }if(!flag) 
     System.out.println("No service appointments were found for vehicles " 
       + "made by " + make); 

} 
+2

問題是......? – 2013-04-08 16:01:55

+2

錯誤是...? – 2013-04-08 16:02:38

+0

請發佈錯誤消息 - 複製粘貼。並確保包含相關的線路標識。 – 2013-04-08 16:02:40

回答

0

如果問題是,爲什麼行號不可用,這可能是你打包代碼執行的一個函數。這聽起來像是調試信息已被剝離。

如果問題是您的代碼在該行可能出現問題,則答案是Ach的長度可能爲零(如果輸入爲空行)。因此Ach.charAt(0)將失敗,因爲沒有第一個字符。你需要測試這種情況。

ch = Ach.length() > 0 ? Ach.charAt(0) : '\n'; 
+0

看起來他的代碼不在方法中。 – assylias 2013-04-08 16:06:47

+0

@assylias - 看起來像這樣,但我懷疑OP只是忽略了這段代碼的上下文(或者帖子有拼寫錯誤)。如果它不在一個方法中,那麼代碼將不會編譯,並且OP將不會像使用調試器一樣。 – 2013-04-08 16:08:16

+0

除非他得到編譯錯誤 - 並將其稱爲調試錯誤?只是猜測... – assylias 2013-04-08 16:09:56