-1

例外を処理するためのステートメントを必ず含める必要がありますが、そうすると、変数 Amount は変化しません。ヘルプ?

public static void main(String[] args){
    AmwayTickets run = new AmwayTickets();
    System.out.print(run.ticketAmount());
}

public int ticketAmount(){
    System.out.println("Enter the amount of tickets you wish to purchase: ");
    int amount = 0;
    try {
        amount = keyboard.nextInt();
    }
    catch (InputMismatchException e){
        System.out.println("Invalid Amount");
        ticketAmount();
        return amount;
    }
    if (amount < 0){
        System.out.println("Invalid Amount");
        ticketAmount();
        return amount;
    }   
    return amount;
}
4

1 に答える 1

4

これを解決するために再帰を使用する必要がありますか? これを行うことになっている場合でも、 amount を返す前に amount 変数に返された値を割り当てていないため、再帰呼び出しはエラーになります。つまり、

    amount = ticketAmount(); // note the difference
    return amount;

またはもっと簡単に:

    return ticketAmount();

しかし、これをしないことをお勧めします。これが私のコードなら、代わりに単純な while ループを使用します。

boolean amountCorrect = false;
while (!amountCorrect) {
   try {
      // try to get an assign amount
      // if successful, assign amountCorrect = true; on the next line
   } catch (InputMismatchException e) {
      // give error warning here
   }
}
于 2012-11-18T04:30:47.227 に答える