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

    }
}

因此,由于这不起作用,我知道我正在以错误的方式进行操作,我如何能够打印出 Theatre 类的构造函数中的数组?

任何帮助将不胜感激,在此先感谢您。^^

4

1 回答 1

0

你做错了三件事。

  1. 您没有做任何事情来区分对象,您Seat()为所有三个都调用了 new ,但您从来没有调用setType()来更改它们的值,因此它们都会以相同的方式打印。您可能需要考虑使用构造函数Seat(String type)并在那里加载值。
  2. Java 自然具有通过本机方法将所有Objects 转换为s 的能力如果您想要打印除默认输出以外的其他内容(几乎总是如此),您要么需要显式调用返回字符串的方法想要(例如,或在您的座位类中创建一个方法。StringObject.toString()System.out.print(x[row][col]);ObjectSeat.GetType()public String toString()
  3. 构造函数中的变量都在剧院类的本地范围内。所以在构造函数完成后,它们都消失了。此外,由于在剧院中您似乎想将数组定义为剧院对象的一部分,您可能不应该将它作为参数传递,您应该只使用类中的字段。(总结版:将变量声明移到构造函数之外)
于 2012-10-25T14:02:51.413 回答