2013-05-21 73 views
0

我正在開發一個控制檯應用程序,我可以註冊項目。每個項目有3個屬性序列號,型號,年份。 我有3類筆記本電腦,筆記本電腦(arraylist)和辦公室運行應用程序。 到目前爲止,我已經成功地找到索引編號的對象本身,而是我需要列出所有對象在鍵入的財產。如何用arraylist中的某個元素查找對象並打印它?

這是我如何讓用戶選擇的選項

Laptops inHouse = new Laptops(); 
model = Console.askModel("Enter Model : "); 
inHouse.findModel(model); 
break; 

那是筆記本電腦中的查找方法類

public void findModel(String aModel) 
{ 
    int arraySize = laptops.size(); 
    for(int i=0; i<arraySize; i++) { 
     if (laptops.get(i).getModel() == aModel) { 
      System.out.println(laptops.get(i)); 
     } 
    }  
} 

這是Console類中的askModel方法。

public static String askModel(String aModel) 
{ 
    System.out.println(aModel); 
    String model = askString("Enter the model: "); 
    return model; 
} 

另外,我很新到Java,我理解這個概念,但很多東西還在掙扎,所以如果我忘了張貼這是解決我在advnace對不起問題所需的代碼。

+0

你不能只複製你的findModal函數的其他屬性? – Nick

回答

2

findModel是除非用於String比較該檢查對象的相等,而不是String平等細,改變比較:使用==校驗

if (laptops.get(i).getModel().equals(aModel)) 

對於非原語,相等測試如果對象是字面上相同(它與實例相同),而String.equals將比較實際的字符串值。

+0

非常感謝,它適用於String.equals – Guns

0

您可能需要一個HashMap,而不是一個ArrayList:

import java.util.HashMap 

public class Laptops{ 
    Map<String, Laptop> laptops = new HashMap<String, Laptop>(); 
    //alternatively if java 7, do "= new HashMap<>();" instead 

    public Laptop findModel(Laptop aModel){ 
     Laptop theModel = laptops.get(aModel); 
     return theModel; 
    } 

要使模型,您將使用HashMap中的put方法:

public void addAModel(String modelName, Laptop aModel){ 

    laptops.put(modelName, aModel); 
} 

如果你知道這樣模型的名字(一個字符串),它會返回你以後的對象Laptop

相關問題