これはコースワーク用です。私はプログラム全体を構築しました、そしてそれはこの1つのことを除いてすべてを正しく行います。
「Schedule」というクラスがあります。このメソッドはスケジュールの最後にあります。
public void bookSeatMenu()
{ boolean leaveBookSeatMenu = false;
String seatBookingMenuStr;
int seatBookingMenuInt = 14;
boolean isInteger = false;
Scanner input = new Scanner(System.in);
System.out.println("Press 1 to add an individual booking, 2 to cancel a booked seat or 3 to go back");
seatBookingMenuStr = input.nextLine();
try {
seatBookingMenuInt = Integer.parseInt(seatBookingMenuStr);
isInteger = true;
}
catch (NumberFormatException e) {
}
switch (seatBookingMenuInt) {
case 1:
bookSeat();
break;
case 2:
cancelSeat();
break;
case 3:
leaveBookSeatMenu = true;
break;
default:
System.out.println("Invalid Choice");
} while (leaveBookSeatMenu == false);
}
スイッチメニューがどのようなものかご存知の方もいらっしゃると思いますが、ここで間違えた場合に備えて、とにかくそこに入れてみようと思いました。
先に進むと、私にはbookSeat
方法があります。これは、ユーザーが座席を予約する場所です(これは正常に機能します)。その後bookSeatMenu()
、メニューを表示するだけで表示されます。しかし、その後は前のものに戻りません。
public void bookSeat()
{
Scanner input = new Scanner(System.in);
boolean isSeatBooked = true;
showSeatPlan();
int seatNum = 0;
int rowNum = 90;
int columnNum = 16;
boolean isInt = false;
while (isSeatBooked == true)
{
System.out.println("Please pick column of a seat to book");
columnNum = input.nextInt();
System.out.println("Please pick row of a seat to book");
rowNum = input.nextInt();
seatNum = (columnNum + ((rowNum) * 15));
if (seats[seatNum] == false)
{
isSeatBooked = false;
}
else
{
System.out.println("This seat is already booked");
}
}
seats[seatNum] = true;
System.out.println("");
bookSeatMenu();
}
今では愛やお金のためではなく、席を予約した後、前のメニューに戻すことができます。
基本的に、プロセスは次のとおりです。
座席を予約->bookSeatMenuに移動->4を押して戻る->前のメニューに移動します。
座席を予約しないと、プログラムは前もってメニューに戻ってくれますが、その後はコマンドプロンプトの新しい行に進み続け、他に何もせず、エラーも発生しません。
私はこれがBlueJの問題かもしれないと言いたくなりますが、悪い職人が彼のツールを非難し、私は「あの男」になりたくありません
また、「テストクラス」を作成する必要があります。これまで「テストクラス」を使用したことがなく、誰も購入しなかった「教科書」を確認するように求められたため、実際にはわかりません。