2015-11-02 38 views
0

如果我有一個數組列表中的10個對象,並且我想根據userinput刪除特定的一個,我該怎麼做?從用戶輸入的數組列表中刪除對象

public ArrayList<SmallItem> Backpack = new ArrayList<SmallItem>(); 
Scanner t = new Scanner(System.in); 
String userInput = t.next(); 

public void dropItemByName() { 
    if(Backpack.contains(t)) { 
      Backpack.remove(item); 
     } 

    } 
+0

是用戶輸入的對象或對象本身的索引? – AbtPst

+1

考慮使用'Map'而不是'List'。 – fzzfzzfzz

+1

ArrayList和userinput之間的連接是什麼?您似乎有一個SmallItem對象的列表,但您的用戶輸入是一個字符串 – AbtPst

回答

0

你不想檢查Backpack.contains(t),除非你實際上在Backpack尋找tt是你的Scanner對象本身,而不是輸入。

如果你希望用戶輸入對象的索引中刪除,那麼你會希望userInputint並做到這一點:

if (userInput < Backpack.size()) { 
    Backpack.remove(userInput); 
} 

如果你希望用戶輸入姓名或其他一些涉及對象而不是其索引的輸入,則應編寫一個方法,該方法將userInput作爲參數,並確定將哪些SmallItemBackpack中刪除並將其刪除。

這裏有一個如何可以做,如果每個SmallItemString類型的變量name一個例子:

for (int i=0; i<Backpack.size(); i++) { 
    if (Backpack.get(i).name.equals(userInput) { 
     Backpack.remove(i); 
     break; 
    } 
} 

此示例將刪除第一個SmallItemBackpack具有匹配userInput一個name。如果您希望它刪除Backpack中的每個SmallItemname值而不是第一個,只需刪除break語句。

0

如果我把它寫我想你想從列表中刪除的項(T)

所以,你必須通過變量(T或用戶輸入),如下圖所示改變變量(項):

String userInput = t.nextline();

公共無效dropItemByName(){

if(Backpack.contains(userInput)) { 
     Backpack.remove(userInput); 
    } 

}