在java中打印二维对象数组

时间:2012-01-30 22:27:48

标签: java

我有一个包含对象的二维数组。有人知道我怎么能打印这个数组?因为当我使用下面的代码时,不打印对象的包含但是打印符号。

Humans [][]cells= new Humans [7][7];

for (int row=0; row<cells.length; row++) {
      for (int col=0; col<cells[row].length; col++) {


            System.out.print("  " + cells[row][col]);


           } 
} 

8 个答案:

答案 0 :(得分:3)

如果要将其包含在字符串连接中,则需要将 toString()添加到Humans对象。

public String toString() {
    return "Name: " + name + " age: " + age + " shoe size: " + shoeSize;
}

答案 1 :(得分:1)

您需要使用toString,并确保2d数组中的实例正确实现它。

在你最内心的循环中,比如

Human current = cells[row][col]; 
// possibly do a null check
System.out.print(current.toString());

请务必在toString上实施Human

答案 2 :(得分:1)

你需要在Human类中覆盖方法toString来打印你想要的类的任何细节(我假设名字和东西)然后代替:

cells[row][col]

你应该写:

cells[row][col].toString()

答案 3 :(得分:1)

正如@hvgotcodes所说,您需要确保您的Human类已实施toString方法。例如,如果一个人只包含一个数字(人的年龄),那么最基本的可能是这样的:

class Human {
    int age;
    public Human(int age){
        this.age = age;
    }       
    @Override
    public String toString(){
        return "[Human: age :=" + age + "]"; //or whatever's appropriate!
    }
}

然后打印您可以写的这些对象的2d数组:

for(int i = 0; i < cells.length; i++){
    for(int j = 0; j < cells[i].length; j++){
        System.out.print(cells[i][j]); //invokes toString method in Human..
        if(j < cells[i].length -1)
            System.out.print(", ");
        }
        System.out.println();
    }
}

答案 4 :(得分:0)

覆盖人类中的toString()方法并打印您要为人类打印的内容。然后使用

Arrays.toString(cells);

打印你的数组。

答案 5 :(得分:0)

你可以覆盖人类toString()吗?

编辑: 这里有很好的参考 http://www.javapractices.com/topic/TopicAction.do?Id=55

答案 6 :(得分:0)

您需要在类Humans中覆盖toString以满足您的需求。

答案 7 :(得分:0)

首先,您需要覆盖Humans对象的toString()方法,以返回表示人类实例内容的String。

接下来,您可能希望在内部for循环完成后打印一个新行,否则您将在一行上打印整个2D数组的全部内容(除非您正在使用的是这里)。