【问题标题】:check if array is full检查数组是否已满
【发布时间】:2014-03-27 17:08:19
【问题描述】:

我正在尝试检查数组是否已满,并打印给无法输入更多书籍的用户。

static Object[][] books=new Object[2][];

我向用户询问 3 个值,并将其存储到另一个名为“row”的数组中。

 Object[]row=new Object[3];

之后,我循环遍历书籍数组并检查其中是否有空值,并使用用户的给定值添加“行”数组。 我遇到的问题是,如果 book 数组在输入两行值后已满,我将无法提供任何反馈。

boolean empty=false;
while(empty==false){
    for (int i = 0; i < books.length; i++) {
            if(books[i]==null){
                books[i]=row;               
                empty=true;
                break;
            }
        }
}

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    为什么没有变量

    int bookCounter = 0;
    

    您可以在每次添加/删除书籍时增加/减少,然后对照您的最大书籍数量(我假设为 books.length)检查它

    这样就不需要遍历数组了,效率不高。

    【讨论】:

      【解决方案2】:

      不需要while 循环。在for 循环结束后,检查您已经设置的empty 变量。如果是false,请将您的反馈反馈给用户。

      【讨论】:

        【解决方案3】:

        数组总是满的。甚至每个元素都是null。如果将其初始化为 10,则 JVM 将分配内存并使用默认值填充所有数组位置。什么是:0 用于原始数字和字符类型,false 用于原始布尔类型,null 用于对象。

        因此,例如,您的代码不适用于 int[]。因为不会存在任何null 元素。

        这就是您没有count() 方法的原因...您可以创建一个名为countNotNull() 的方法。但是你需要对所有的数组进行交互。

        最好的解决方案是在添加/删除元素表单数组时使用变量进行计数。作为 Guillermo Merino 说。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-15
          • 1970-01-01
          • 2020-03-11
          • 2011-10-30
          • 1970-01-01
          • 2012-12-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多