在Java中打印ArrayList的大小

时间:2015-04-08 20:11:22

标签: java arraylist

我目前正在尝试检测并打印出用于大学作业的Java中ArrayList的大小。这就是我到目前为止所做的:

ArrayList的方法

    public Dog[] obtainAllDogs() {
    Dog[] result = new Dog[dogs.size()];
    result = dogs.toArray(result);
    return result;
}

设置狗窝容量的方法(从控制台运行)

    private void setKennelCapacity() {

     Dog[] currentKennelCapacity = kennel.obtainAllDogs();
     for (Dog d: currentKennelCapacity){
    }
    System.out.println("The current kennel holds " + currentKennelCapacity + ", if you wish to increase it please enter a number below.");
    System.out.print("Enter max number of dogs: ");
    int max = scan.nextInt();
    scan.nextLine();
    kennel.setCapacity(max);
}

它有点笨拙,但它现在完成了这项工作,有趣的是它在通过控制台时打印出来:

The current kennel holds [LDog;@55f96302, if you wish to increase it please enter a number below.

它正在接收某些东西但不完全是我想要的东西。目前狗窝的大小设置为20,因此显然应该打印出20而不是[LDog; @ 55f96302。

有人可以向我解释这个错误吗?

如果我用“d”替换currentKennelCapacity(来自for each循环),它会打印出来自狗窝的所有数据,而不仅仅是整数20。

以下是当前的犬舍信息(如果有用):

DogsRUs
20
1
Dinky
1
James Bond
007007
false
1
Gold fingers

如果可能的话,我更愿意帮助我理解而不仅仅是一个直接的解决方案,帮助我学习:)

谢谢!

5 个答案:

答案 0 :(得分:4)

currentKennelCapacity是一个数组。如果您想打印它可以容纳多少元素,您应该使用currentKennelCapacity.length

System.out.println("The current kennel holds " + currentKennelCapacity.length + ", if you wish to increase it please enter a number below.");

注意这对于应该引用数组的变量来说不是一个好名字,因为它看起来应该是一个数字。

答案 1 :(得分:2)

您所做的是打印数组本身,而不是数组的大小。在Java中,数组也是对象,但它们不会覆盖Object's toString methodArrays.toString负责[LDog;@55f96302输出。

  

[T]他的方法返回一个等于值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

所有数组都有一个length属性,您可以使用。

System.out.println("The current kennel holds " + currentKennelCapacity.length
    + ", if you wish to increase it please enter a number below.");

令人困惑的是你选择变量名currentKennelCapacity,这样名称就会描述除了它之外的其他东西。我会将它命名为更准确的内容,例如currentKennel。这可能会让您自己混淆打印变量时要打印的内容。

另外,如果要打印数组内容,可以使用{{3}}。

System.our.println(Arrays.toString(currentKennel));

答案 2 :(得分:1)

使用[] .length

System.out.println("The current kennel holds " + currentKennelCapacity + ", if you wish to increase it please enter a number below.");

System.out.println("The current kennel holds " + currentKennelCapacity.length + ", if you wish to increase it please enter a number below.");

答案 3 :(得分:0)

您正在尝试打印出无法转换为字符串的Dog数组,这就是您看到这些数字的原因。这是数组的哈希码。

您可以通过其长度属性找到数组的大小,如下所示:

System.out.println("The current kennel holds " +
    currentKennelCapacity.length
    + ", if you wish to increase it please enter a number below.");

答案 4 :(得分:0)

首先,您的print语句不在每个循环中。 其次,您可以尝试研究重载toString()方法。这将有助于您了解为什么不能按照您想要的方式打印阵列。最后,正如其他人已经提到的那样,您需要使用array.length来获得数组的大小。