方法,类和使用数组的问题构成了它们

时间:2012-10-25 13:14:57

标签: java arrays class methods constructor

所以基本上,我有两个班级(到目前为止)“座位”和“剧院”以及我的主要方法。

我要制作影院预订系统,为此我需要使用阵列创建一个“影院”。但是我希望能够制作尽可能多的电影院,因为我可能会添加其他变量,例如(时间,电影等),我想我会创建一个包含一系列座位的“剧院”类在它的构造函数中,然后有一个显示数组的方法,但是我不知道如何执行它。

这是我到目前为止所拥有的“

主类:

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

    }
}

因此,由于这不起作用,我知道我正在以错误的方式处理它,我怎样才能打印出Theater类构造函数中的数组?

任何帮助将不胜感激,谢谢你提前。 ^^

1 个答案:

答案 0 :(得分:0)

你做错了三件事。

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