我有一个包含对象的二维数组。有人知道我怎么能打印这个数组?因为当我使用下面的代码时,不打印对象的包含但是打印符号。
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]);
}
}
答案 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数组的全部内容(除非您正在使用的是这里)。