1

//次のプログラムでは、最初はユーザーが指示で迎えられたときに、センチネルを入力してwhileループを終了できますが、購入したいチケットの結果が得られた場合、999を押してもプログラムは終了しません。

import java.io.*;

public class ManyTickets
{

  public static void main (String [] args) throws IOException
  {
  String userInput;
  String userInput2;
  int intInput = 0;
  int intInput2 = 0;
  double total = 0.00;
  BufferedReader ageInput = new BufferedReader (new InputStreamReader (System.in));
  try{
    System.out.println("Please enter your age, or press '999' to exit.");
    userInput = ageInput.readLine();
    intInput = Integer.parseInt (userInput);
    while (intInput != 999)
    {
      if (intInput < 0 || intInput > 110)
        System.out.println("Invalid entry, or your age seems a bit too high to enter buy these tickets");
      else if (intInput <= 12)
      {
        total = total + 6;
        System.out.println("The ticket cost for 1 ticket is " + total);
      }
      else if (intInput <= 64)
      {
        total = total + 11;
        System.out.println("The ticket cost for 1 ticket is " + total);  
      }
      else
      {
        total = total + 8;
        System.out.println("The ticket cost for 1 ticket is $" + total);
      }
      System.out.println("So far, your tickets cost is: $" + total  );
      System.out.print("Would you like to buy more tickets? You can buy up to 1 more ticket per customer! If no press 999 to exit");
      userInput = ageInput.readLine();
      intInput2 = Integer.parseInt (userInput);  
      }
    }catch (NumberFormatException e){
       System.out.println("Please restart the program, and enter an integer instead!");
    }
  } 
  {
    double total = 0.0;
    System.out.println("Thank you,  The total cost for the ticket is: $" + total);
    System.out.println("Have a nice day!");
  }
}
4

2 に答える 2

3

2つの異なる変数とを使用していintInputますintInput2。2つ目(キャッチブロックの直前)が必要な理由がわかりません。intInputwhileループの番兵値に対してチェックされているを再利用するだけです。

于 2013-02-26T03:03:52.450 に答える
2

ユーザーが999を入力した後は、何もしていません。999が次のようになったら、ループを解除します。

intInput2 = Integer.parseInt(userInput);

if (intInput2 == 999) {
 break;
}
于 2013-02-26T03:03:10.900 に答える