【问题标题】:Trouble with methods, and classes, and using the arrays form them方法和类的问题,以及使用它们形成的数组
【发布时间】:2012-10-15 16:27:50
【问题描述】:

所以基本上,我有 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 类的构造函数中的数组?

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

【问题讨论】:

  • 我们可以正确理解预期的代码。如果您的代码格式不正确,那么编写这么多 cmets 将无济于事。
  • 我拿出了cmets,用netbeans格式的东西格式化了,希望读起来容易一点。
  • 我已经这样做了。但没关系,你再做一次。

标签: java arrays class methods constructor


【解决方案1】:

你做错了三件事。

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

【讨论】:

  • 好的,我为对象设置了值,我不敢相信我没有这样做。我的主要问题是,cinema1.DisplayTheatre(Seat y[][]) 行不工作。我想这是因为当我实例化 Theatre 对象时,我无法在需要打印数组的方法中使用 Theatre 类构造函数中的 Seat Array。你对如何解决这个问题有什么建议吗?
  • @user1719605:我添加了第三个错误,应该可以解决您的问题。
  • @user1719605:解决了吗?不要忘记检查我的答案是否正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
相关资源
最近更新 更多