Java 变量不会改变

Java 变量不会改变,java,exception,Java,Exception,我必须确保我包含了处理异常的语句,但当我这样做时,变量量不会改变。帮忙 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 wis

我必须确保我包含了处理异常的语句,但当我这样做时,变量量不会改变。帮忙

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

您确定应该使用递归来解决此问题吗?即使您应该这样做,递归调用也是错误的,因为您没有在返回amount之前将返回的值赋给amount变量。i、 e

    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
   }
}

你想换吗?如果nextInt抛出一个异常,意味着出现了问题,那么它是否应该更改?你在问什么?详细说明你正在尝试做什么,你期望什么,什么让你困惑。while循环由于某种原因对我不起作用。。。我一定做得不对。第一个建议非常有效,非常感谢@user1695758:第一个建议很糟糕,只是为了告诉你为什么你的代码不起作用,但我不建议你这么做。请向我们展示您的while循环尝试,作为对原始帖子的编辑,让我们看看是否可以帮助您使其正常工作。