java - 为什么通过二维数组打印时显示整个对象属性

标签 java arrays

我正在创建一个 5x5 板,在不同位置存储各种字符,以表示它是空的,显示“-”,并根据字符显示另一个符号 %,& 等。

我能够将字符分配到该位置,但是当需要显示棋盘时,会使用 getSymbol() 根据需要打印出 toString() 方法。 > 方法。

角色存储在 characters 数组中,棋盘保存在 2D 数组multD 中。 Character是父类,子类有Dogcat等。

主要方法

Object [][] multD = new Object[5][5];
ArrayList<Character> characters = new ArrayList<Character>();

Character dog1 = new Dog();
dog1.setPosition(2, 2);
multD[dog1.getX()][dog1.getY()] = dog1;

for (int i = 0; i < 5; i++){
    for (int j = 0; j < 5; j++){
        if (multD[i][j] == null){
            multD[i][j] = '-';
        }else  {
            multD[i][j]=("@@");  //test
          //multD[i][j] = multD[i][j].getSymbol();<- something I assumed like this but I don't know the code
        }
    }
}
for(int i=0; i<5; i++) {
    for(int j=0; j<5; j++)
        System.out.print(multD[i][j]+" ");
        System.out.println();
}

Dog子类(将添加更多属性)

public class Dog extends Character{
private int x, y;

    public Dog(){
        setType("Dog");
        setSymbol('%');
    }
    @Override
    public int getX(){
        return x;
    }
    @Override
    public int getY(){
        return y;
    }
    @Override
    public void setPosition(int x, int y){
        this.x = x;
        this.y = y;
    }

}

Character 父类中的 toString 方法

   public String toString() {      
       String st = "Entity Properties \n";
       st = st + "  TYPE:  " + getType() ;
       return st;
   }

既然 Dog 存储在 [2][2] 中,我如何只打印该字符的符号?最终角色会移动。

感谢任何帮助或建议!

最佳答案

这一行:

对象[][] multD = new Object[5][5];

需要修改为

字符[][] multD = 新字符[5][5];

如果您想在 multD 上调用 getSymbol()

关于java - 为什么通过二维数组打印时显示整个对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655252/

相关文章:

c - 为什么在请求用户再次输入后字符数组为空?

php - 查找数组是否至少有 1 个值

c++ - 解释这个 C++ 函数如何返回一个数组

javascript - web2py:如何将 python 数组复制到 javascript 数组中

java - Maven exec 插件将参数传递给外部可执行文件

java - JMS Bridge 现有队列消息

java - 从数据库加载 GWT 消息

java - 如何只循环一次组合?

javascript - js如果数组中的任何值小于或大于值

java - 通过 Scala 中的套接字发送 Jar 文件时会损坏