2016-11-18 17 views
0

シンプルなシネマ予約システムを使っています。これまで私が行ったコードは次のとおりです。私は初心者ですし、私のコードにいくつかの欠陥や悪いコーディング方法があることは間違いないと思いますので、私を許してください。シンプルシネマ予約システム

予約された座席を整数から "**"に変更し、プログラム全体の第2回目のループが実行されたときにそれを座席プランに表示して、どの座席が予約されましたか?例えば、顧客は座席5を予約しており、さらに予約したいので、2番目のループが来ると、座席5が**になっていることがわかります。これは予約済みであることを意味します。私はそれを学んでいるので、私は配列を使ってこれをやりたいのですが、配列を使う以外の方法があれば感謝します。

import java.util.Scanner; 

public class CinemaBooking { 

    public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    int[] SeatNo = new int[30]; 
    int Seats; 
    int YesOrNo = 1; 
    String CustomerName; 

    while (YesOrNo == 1) { 
     System.out.print("Welcome to Crazy Cinema!\nWhat is your name?\n"); 
     CustomerName = input.nextLine(); 

     System.out.printf("Welcome %s! Please have a look at the seating plan.\n\n", CustomerName); 

     for (int i = 1; i <= 34; i++) { 
     System.out.print("*"); 
     } 
     System.out.println(); 

     System.out.print("  CINEMA 1 SEATING PLAN"); 
     System.out.println(); 

     for (int j = 1; j <= 34; j++) { 
     System.out.print("*"); 
     } 
     System.out.println(); 

     for (int SeatCounter = 0; SeatCounter < SeatNo.length; SeatCounter++) { 
     System.out.printf(SeatCounter + "\t"); 

     if (SeatCounter == 4) { 
      System.out.println(); 
     } else if (SeatCounter == 9) { 
      System.out.println(); 
     } else if (SeatCounter == 14) { 
      System.out.println(); 
     } else if (SeatCounter == 19) { 
      System.out.println(); 
     } else if (SeatCounter == 24) { 
      System.out.println(); 
     } else if (SeatCounter == 29) { 
      System.out.println(); 
     } 
     } 
     for (int k = 1; k <= 34; k++) { 
     System.out.print("*"); 
     } 
     System.out.println(); 

     System.out.print("Which seat would you like to book? "); 
     Seats = input.nextInt(); 

     while (Seats < 0 || Seats > 29) { 
     System.out.println("Only 0 - 29 seats are allowed to book. Please try again: "); 
     Seats = input.nextInt(); 
     } 

     for (int SeatCounter = 0; SeatCounter < SeatNo.length; SeatCounter++) { 
     if (SeatCounter == Seats) { 
      System.out.println("Seat " + Seats + " is successfully booked."); 
      System.out.println(
       "Thanks for booking!\n\nWould you like to make next booking? (Type 1 = Yes; Type 2 = No)"); 
      YesOrNo = input.nextInt(); 

      if (YesOrNo == 2) { 
      System.out.println("Thank you for using this program."); 
      } 
     } 
     } 

     while (YesOrNo != 1 && YesOrNo != 2) { 
     System.out.println("Invalid input."); 
     System.out.println("Type 1 = Continue booking; Type 2 = Exit the program"); 
     YesOrNo = input.nextInt(); 

     if (YesOrNo == 2) { 
      System.out.println("Thank you for using this program."); 
     } 
     } 
    } 
    } 
} 
+3

"悪いコーディング慣行"最も明白でないコーディング慣習は、フォーマットが貧弱です。あなたのコードをインデントする方法を学ぶ(またはあなたのためにあなたのIDEにそれをさせる方法を学ぶ)。あなたと他の人があなたのコードを理解するのに不思議に思うでしょう。 –

+1

次に明白なのは命名です:変数は小文字で始まります。クラスは大文字で始まります。 [Oracleの規則](http://www.oracle.com/technetwork/java/codeconventions-135099.html)、[GoogleのJavaスタイル・ガイド](https://google.github.io/styleguide/javaguide.html)を参照してください。 #s5-naming)。 –

+0

ありがとうございます。あなたの助けに感謝。 :)私はそれで解決します。 –

答えて

1

1つの提案があります。

if (SeatCounter == 4) 
else if (SeatCounter == 9) 
else if (SeatCounter == 14) 
... 

if else件の文が多すぎます。あなたはあなたのコードをminize、それが多少簡単になります。この

if((SeatCount+1) % 5 == 0)

このように、単一のステートメントを使用することができます。

+0

ありがとうございます。ほんとうにありがとう。 :) –

関連する問題