2014-03-27 65 views
0

我正在嘗試檢查一個數組是否已滿,並向用戶輸出他無法輸入更多書籍。檢查數組是否已滿

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

我從用戶詢問3個值,並存儲到另一個名爲「row」的數組中。

Object[]row=new Object[3]; 

通過書籍數組i循環後,檢查是否有它裏面空值,並與用戶的給定值添加「行」陣列。 現在的問題是我不能給任何反饋,如果書籍數組完整後輸入兩行值。

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

回答

2

爲什麼不具有可變

int bookCounter = 0; 

,你可以增加/減少每次你添加/刪除圖書,然後就檢查它,書的最大數量(我假設是books.length

用這種方法你不需要遍歷數組,這是不高效的。

1

不需要while循環。在for循環結束後,檢查您的empty變量,您已經設置。如果它是false,那麼請將您的反饋提供給用戶。

1

數組總是滿滿的。即使每個元素是null。如果您初始化它的大小爲10,那麼JVM將分配內存並使用默認值填充所有陣列位置。什麼是:基本數字和字符類型的0,原始布爾類型的false和對象的null

所以,你的代碼不能用int []作爲例子。因爲不存在任何元素。

這就是爲什麼你沒有count()方法...您可以創建一個名爲countNotNull()的方法。但是你需要長時間整個數組。

最好的解決方案是當你添加/刪除itens表單數組時使用一個變量來計數。正如 吉列爾莫利諾說。