2014-09-05 52 views
-1

我正在寫一個接受用戶輸入的字符串在一個類中的Java程序。如何使用該元素的字段值在ArrayList中查找元素?

在一個單獨的類上,我有一個包含類型爲String(itemName),int和double的元素的類類型'Item'的數組列表。我想知道是否有辦法將用戶輸入的字符串轉換爲'Item'類型的對象(我聽說這很困難),或者如果有一種方法可以訪問數組的單個String元素itemName - 列表將其與用戶輸入的字符串進行比較。

Item.java

public class Item { 
    private String name; 
    private int monetaryValue; 
    private double weight; 

    // Getters and Setters 
    // ... 

    // Other methods 
    // ... 
} 
+1

你的ArrayList包含'Item',但它包含Strings,整數和雙精度? – csmckelvey 2014-09-05 00:27:02

+1

目前還不清楚,您可以分享「Item」的代碼還是重新解釋包含列表的內容? – Dici 2014-09-05 00:27:50

+0

它聽起來並不重要,但重要的是你的嘗試。 – JosEduSol 2014-09-05 00:28:42

回答

2

我不會在這裏使用Reflection:它使用火箭筒來殺死蚊子。我寧願使用普通的Java。

檢查下面這個例子:

List<Item> myList = new ArrayList<Item>(); 
String userInputValue; 

// * Add some items to myList 
// ... 

// * Get user input value 
// ... 

// * Access the array list 
int len=myList.size(); 
for(int i=0; i<len; i++) { 
    if (myList.get(i).getItemName().equals(userInputValue)) { 
     // Do something ... 
    } 
} 
+0

謝謝,Stepan!這正是我需要的。 – Francis 2014-09-05 00:54:07

0

當然你也可以建立從用戶輸入Item對象,如果你這樣定義[name:string] [i:int] [d:double](例如:john 5 3.4)的輸入格式。然後你只需要分割這個String並使用Integer.parseInt和Double.parseDouble來解析最後兩個參數。

1

若要從用戶輸入Item,你可以這樣做:

String input1; 
String input2; 
String input3; 

// Assign user input to input1, input2, input3 

String itemName = input1; 
int data2 = Integer.parseInt(input2); 
double data3 = Double.parseDouble(input3); 

Item myItem = new Item(itemName, data2, data3); 

要訪問數組列表中的元素,你可以這樣做:

List<Item> items; 
String input; 

// Populate items 

// Assignment user input to "input" variable. 

for (Item item : items) { 
    if (item.getItemName().equals(input)) { 
     // Do something... 
    } 
}