我该怎么做 编写一个带有void返回值的方法,该方法反转布尔二维数组的所有元素(true变为false,false变为true),包括测试方法的代码。输出应在反转之前和之后显示数组的所有值。
现在我已经完成了代码,但是当我使用System.out.println来显示数组时,我会在答案中弹出一些奇怪的值。任何人都可以帮助我。 这是代码:
public class TF
{
public static void main(String[] args)
{
boolean [][] bArray = {{false,false,true},{true,false,true}};
System.out.println("This is before: " + bArray);
for(int i = 0; i > bArray.length; i++)
{
for(int j = 0; j < bArray[i].length; i++)
{
bArray[i][j] = !(bArray[i][j]);
}//endfor(j)
}//endfor(i)
System.out.println("This is after: " + bArray);
}//endmain
}//end TF
这是我得到的回归类型:
This is before: [[Z@69ed56e2
This is after: [[Z@69ed56e2
任何人都知道我为什么会这样做?
答案 0 :(得分:0)
在Java中,当您尝试将数组转换为String时,您将获得数组的零索引地址,这就是为什么您看到mumbo-jumbo打印到控制台的原因。
要打印出数组中的值,请使用数组.length
属性上限的for循环(这内置于所有Java数组中,因此您不必担心关于它):
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
要以视觉上令人愉悦的格式打印出二维数组的内容,您可以使用我编写的代码或执行类似的操作:
// "Pretty print" 2D array
System.out.print("[");
for (int i = 0; i < bArray.length; i++) {
System.out.print("[");
for (int j = 0; j < bArray[i].length; j++) {
System.out.print(bArray[i][j] + ((j < bArray[i].length - 1) ? ", " : ""));
}
System.out.print("]" + ((i < bArray.length - 1) ? ", " : ""));
}
System.out.println("]");
答案 1 :(得分:0)
是。数组是Object
(s)和继承(但不是Override
)Object.toString()
而javadoc说(部分)
类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
相反,您可以使用Arrays.deepToString(Object[])
之类的
System.out.println("This is before: " + Arrays.deepToString(bArray));
此外,
for(int j = 0; j < bArray[i].length; i++)
应该是
for(int j = 0; j < bArray[i].length; j++)