【问题标题】:Assign properties in an array在数组中分配属性
【发布时间】:2011-03-05 07:36:59
【问题描述】:

我已经定义了一个类并在同一个类下声明了一个对象数组,但是得到了编译错误。我想知道是否有什么小东西我在这里俯瞰。

import android.widget.ImageView;


public class Tile {
    public int ID;
    public ImageView image;
}

当我在这里定义这个类时,出了点问题。

Tile tile_array[][] = new Tile[3][3];


tile_array[1][1].image = new_image;
tile_array[1][1].ID = tile_counter;

【问题讨论】:

  • 我们能否提供更多关于第二个代码部分的上下文,以及您遇到的确切错误。但是假设代码在合法的地方(例如在方法中)——类似的代码不会给我一个编译错误,而是一个运行时异常。

标签: java android multidimensional-array


【解决方案1】:

我明白了,你做错了两件事。

  1. 您应该分配 [1][1] 对象。 即 - tile_array[1][1] = new Tile().
  2. 您的图像对象(ImageView 类)仍未分配。

【讨论】:

  • @Nikita Rybak -- 我不认为这是一个编译错误。使用类似的代码,我无法让它出现编译错误。
  • @Dre 你应该对 OP 这么说 :) 我只是在引用他的话。
  • @Nikita Rybak,即使我没有看到任何编译器错误,但只是指出了错误的东西。实际上我应该在我的答案中写下这个。谢谢。
【解决方案2】:

我猜您正在尝试创建一个固定大小为 3 x 3 的二维数组。 一些备注:

  1. 这是固定大小,这意味着一旦初始化对象 tile_array,就无法更改大小(如果这是您想要的,没问题)
  2. 如何在方法范围内完成此操作的示例:

    Tile[][] tileArray = new Tile[3][3];  
    tileArray[1][0].ID = 1;
    tileArray[1][0].image = new ImageView(this);
    
    tileArray[1][1].ID = 2;
    tileArray[1][1].image = new ImageView(this);
    
    tileArray[1][2].ID = 3;
    tileArray[1][2].image = new ImageView(this);
    
  3. 我建议使用 Arraylist,因为这比编写这么多代码更有优势。在尺码上也很灵活。

【讨论】:

  • tileArray[1][3] 将无效并且超出数组范围。 Java 数组是从 0 开始的,因此 [1][0]、[1][1] 和 [1][2]。
【解决方案3】:
public class Arrow{
        public int ID;
        public static void main(String [] args){
                Arrow arrow[][] = new Arrow[3][3];
        }
}

对我来说编译得很好。

【讨论】:

  • 抱歉,我在否决投票之前没有检查。我试图中和但我的投票被锁定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多