0

我正在开发一个控制台应用程序,我可以在其中注册项目。每个项目有 3 个属性序列号,型号,年份。我有 3 类笔记本电脑、笔记本电脑(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很陌生,我理解这个概念,但仍然在很多事情上苦苦挣扎,所以如果我忘记发布解决问题所需的代码,我很抱歉。

4

2 回答 2

2

findModel很好,除了您的String比较检查对象是否相等而不是String相等,将比较更改为:

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

对于非原始对象,相等性测试使用==检查对象是否字面上相同(它是相同的实例),而String.equals将比较实际的字符串值。

于 2013-05-21T22:55:07.540 回答
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;
    }

要将模型放入,您将使用putHashMap 的方法:

public void addAModel(String modelName, Laptop aModel){

    laptops.put(modelName, aModel);
}

这样,如果您知道模型的名称(字符串),它将返回您想要的Laptop对象。

于 2013-05-21T23:06:32.023 回答