-1

String.charAt(int) 行でデバッグ エラーが発生しました: この行では使用できません
ch = Ach.charAt(0);

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);

}
4

1 に答える 1

0

なぜ行番号が利用できないのかという疑問がある場合、それはおそらく、実行のためにコードをどのようにパッケージ化したかの関数です。デバッグ情報が削除されたようです。

質問がその行のコードの何が問題なのかという場合、答えはAch長さがゼロの可能性があるということです (入力が空の行の場合)。したがってAch.charAt(0)、最初の文字がないため失敗します。その条件をテストする必要があります。

ch = Ach.length() > 0 ? Ach.charAt(0) : '\n';
于 2013-04-08T16:04:15.480 に答える