返回一个布尔值数组时得到奇怪的结果

时间:2015-03-08 00:57:54

标签: java arrays boolean

我该怎么做 编写一个带有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

任何人都知道我为什么会这样做?

2 个答案:

答案 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)和继承(但不是OverrideObject.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++)