返回布尔值数组时得到奇怪的结果
Getting weird result when returning an array of boolean values
我怎么办
编写一个带有 void return 值的方法,该方法反转二维布尔数组的所有元素(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
这是我得到的return类型:
This is before: [[Z@69ed56e2
This is after: [[Z@69ed56e2
有人知道我为什么会收到这个吗?
在 Java 中,当您尝试将数组转换为字符串时,您将获得数组的零索引地址,这就是为什么您会在控制台上看到大量信息的原因。
要打印出数组中的值,请使用限制在数组 .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("]");
是的。数组是 Object
(s) 并继承(但不是 Override
)Object.toString()
并且 javadoc 说(部分)
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
相反,您可以使用 Arrays.deepToString(Object[])
like
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++)
我怎么办 编写一个带有 void return 值的方法,该方法反转二维布尔数组的所有元素(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
这是我得到的return类型:
This is before: [[Z@69ed56e2
This is after: [[Z@69ed56e2
有人知道我为什么会收到这个吗?
在 Java 中,当您尝试将数组转换为字符串时,您将获得数组的零索引地址,这就是为什么您会在控制台上看到大量信息的原因。
要打印出数组中的值,请使用限制在数组 .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("]");
是的。数组是 Object
(s) 并继承(但不是 Override
)Object.toString()
并且 javadoc 说(部分)
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
相反,您可以使用 Arrays.deepToString(Object[])
like
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++)