【问题标题】:I am trying to simply print out a 2D array. But I am getting an error我试图简单地打印出一个二维数组。但我收到一个错误
【发布时间】:2016-07-28 22:05:16
【问题描述】:

Eclipse 在下面的最后一行代码中告诉我,“表达式的类型必须是数组类型,但它解析为剧院”(我为二维数组创建的对象的类)。具体在这里 --> a[row]

这只是我在 Java 课程中从事的一个较大项目的一小部分。大家可能对它很熟悉,我必须使用 2D 数组来打印和实现一个剧院座位表。我必须编写按价格搜索、按座位搜索等的方法。现在我只是想初始化 2D 数组,在其中放入一些值,然后将它们打印出来。非常感谢任何帮助。

public class Theater {
//int[][] x = new int[9][10];   
int y[][];

    public Theater(){
        //Initialize array
        for (int row = 0; row < 3; row++)
            for (int column = 0; column < 10; column++)
                y[row][column] = 10;
    }

    public static void main(String[] args){
        Theater a = new Theater();

        for(int i = 0; i < 3; i++)
            for (int row = 0; row < 9; row++)
                for (int column = 0; column < 10; column++)
                    System.out.println(a[row][column]);

【问题讨论】:

  • a 不是一个数组,它只是一个 Theater 类型的对象。
  • 确保你也初始化了y。如果它仍然是null,则不能分配给y 的索引值。
  • Arrays.deepToString(Object[]) 是你想要的。而且,您需要访问数组y(所以,a.y)。

标签: java arrays multidimensional-array dimensional


【解决方案1】:

[] 运算符需要应用于作为数组的表达式。由于Theater 不是数组,因此会出现编译时错误。您可能想访问Theater 实例的y 字段:

...
System.out.println(a.y[row][column]);

此外,您需要在使用之前创建y 数组:

public Theater(){
    this.y = new int[9][10];
    ...

否则这将导致在尝试写入数组时出现NullPointerException (y[row][column] = 10;)。

【讨论】:

  • 谢谢大家。一旦我初始化了 y 数组并将其设置为 a.y 而不仅仅是 a 它让我打印。现在我想弄清楚如何只循环十次。但那是另一个问题。再次感谢:-)
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2020-02-02
  • 2019-10-24
相关资源
最近更新 更多