0

基本的に、私は(これまでのところ)「座席」と「劇場」の2つのクラスと私の主な方法を持っています。

私は映画館の予約システムを作成する予定です。そのためには、配列を使用して「映画館」を作成する必要があります。ただし、これらの映画館を好きなだけ作成できるようにしたいと考えており、(時間、映画などの) 他の変数を後で追加する可能性があるため、座席の配列を含む「劇場」クラスを作成すると考えました。そのコンストラクターで、配列を表示するメソッドを持っていますが、これを実行する方法がわかりません。

これが私がこれまでに持っているものです」

メインクラス:

public class CinemaSystem {


    public static void main(String[] args) {


        // Creating a cinema.

        Theatre cinema1 = new Theatre();


        Scanner scan = new Scanner(System.in);
        Scanner scan1 = new Scanner(System.in);
        System.out.print("Welcome to the Theatre Booking System. (QUIT to exit)"
                + "\nWould you like to purchase tickets or list available seats?"
                + "(/Purchase/List/Help)");
        String answer, answer2;

        answer = scan.nextLine();
        int count = 0;


        if (answer.equalsIgnoreCase("purchase")) {
            cinema1.DisplayTheatre(Seat 
            y[][]
          );


            } else if (answer.equalsIgnoreCase("list")) {
        } else if (answer.equalsIgnoreCase("help")) {
            // Code for help
        } else if (answer.equalsIgnoreCase("quit")) {
            System.exit(-1);
        } else {
            do {
                System.out.print("Sorry, incorrect input please enter"
                        + " a valid input (Purchase/List/Help or QUIT to exit");
                answer = scan1.nextLine();
                count++;


                if (answer.equalsIgnoreCase("purchase")) {
                    // Code for purchase  
                } else if (answer.equalsIgnoreCase("list")) {
                    // Code for list   
                } else if (answer.equalsIgnoreCase("help")) {
                    // Code for help
                } else if (answer.equalsIgnoreCase("quit")) {
                    System.exit(-1);
                } else if (count == 3) {
                    System.out.print("Are you stupid? Purchase/List/Help or Quit are your options. ... Terminating...");
                    System.out.println();
                    System.exit(1);
                }
            } while (!answer.equalsIgnoreCase("purchase")
                    || !answer.equalsIgnoreCase("list")
                    || !answer.equalsIgnoreCase("help")
                    || !answer.equalsIgnoreCase("quit"));




        }
    }
}

座席クラス:

public class Seat {


    public Seat() {
    }

    private String type;
    private boolean status;


    public String GetType() {
        return type;
    }

    public void SetType(String x) {

        type = x;
    }

    public boolean SetStatus() {
        return status;
    }

    public void GetStatus(boolean x) {
        status = x;
    }
}

シアタークラス:

public class Theatre{

    public Theatre() {
        Seat B = new Seat();
        Seat S = new Seat();
        Seat G = new Seat();



        Seat y[][] = {
            {B, B, B, B, B, B, B, B},
            {B, B, B, B, B, B, B, B},
            {B, B, B, B, B, B, B, B},
            {B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B},
            {B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B},
            {B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B},
            {B, B, B, B, S, S, S, S, S, S, S, S, S, S, B, B, B, B},
            {B, B, B, B, S, S, S, S, S, G, G, G, G, G, S, S, S, S, S, B, B, B, B},
            {B, B, B, B, S, S, S, S, S, G, G, G, G, G, S, S, S, S, S, B, B, B, B},
            {S, S, S, S, S, S, S, S, S, G, G, G, G, G, S, S, S, S, S, S, S, S, S},
            {S, S, S, S, S, S, S, G, G, G, G, G, G, G, G, G, S, S, S, S, S, S, S},
            {S, S, S, S, S, S, S, G, G, G, G, G, G, G, G, G, S, S, S, S, S, S, S},
            {S, S, S, S, S, S, S, G, G, G, G, G, G, G, G, G, S, S, S, S, S, S, S}
        };
    }

    public void DisplayTheatre(Seat x[][]) {
        for (int row = 0; row < x.length; row++) {
            for (int col = 0; col < x[row].length; col++) {
                System.out.print(x[row][col]);
            }
            System.out.println();
        }

    }
}

これはうまくいかないので、間違った方法で進めていることはわかっています。シアター クラスのコンストラクターにある配列をどのように出力できますか?

どんな助けでも大歓迎です、事前に感謝します。^^

4

1 に答える 1

0

あなたは3つのことを間違っています。

  1. オブジェクトを区別するために何もしていませSeat()ん。3 つすべてに対して new を呼び出しますsetType()が、それらの値を変更するために呼び出すことはないため、すべて同じ方法で出力されます。コンストラクターを持つことを検討し、Seat(String type)そこに値をロードすることをお勧めします。
  2. Java には当然、ネイティブ メソッドによってすべてObjectの s をs に変換する機能があります。デフォルトの出力以外のものを出力したい場合(これはほとんどの場合に当てはまります)、指定した文字列を返すメソッドを明示的に呼び出す必要があります。したい (たとえば、、またはシート クラスにメソッドを作成します。StringObject.toString()System.out.print(x[row][col]);ObjectSeat.GetType()public String toString()
  3. コンストラクターの変数はすべて、シアター クラスのローカル スコープにあります。したがって、コンストラクターが終了すると、それらはすべて消えます。また、劇場では、配列を劇場オブジェクトの一部として定義したいように思われるため、おそらくそれを引数として渡すべきではなく、クラス内のフィールドを操作するだけでよいでしょう。(要約版: 変数宣言をコンストラクタの外に移動)
于 2012-10-25T14:02:51.413 に答える