使用扫描仪填充对象的ArrayList

时间:2017-02-07 21:47:15

标签: java arraylist java.util.scanner

我试图填充ArrayList IngredientsArrayList,它们是存储成分名称(字符串)的对象,价格(双倍),卡路里数(整数)如果成分是素食(布尔)。

由于会有多种成分,我认为我应该使用public static void main(String[] args){ Scanner s = new Scanner(System.in); int numberOfIngredients = s.nextInt(); List<Ingredient> ingredientArrayList = new ArrayList<Ingredient>(); for (int i = 0; i< numberOfIngredients; i++){ String ingredientName = s.next(); double pricePerOunce = s.nextDouble(); boolean isVegetarian = s.nextBoolean(); int numberOfCalories = s.nextInt(); ingredientArrayList.add(ingredientName, pricePerOunce, numberOfCalories, isVegetarian); }// ends for loop to fill the ingredientArray } 。如何使用扫描仪中的数据填充配料对象?这就是我到目前为止所做的:

function createStringFromTemplate(template, variables) {
    return template.replace(new RegExp("\{([^\{]+)\}", "g"), function(_unused, varName){
        return variables[varName];
    });
}

createStringFromTemplate(
    "I would like to receive email updates from {list_name} {var1} {var2} {var3}.",
    {
        list_name : "this store",
        var1      : "FOO",
        var2      : "BAR",
        var3      : "BAZ"
    }
);

2 个答案:

答案 0 :(得分:1)

ingredientArrayList.add(ingredientName, pricePerOunce, numberOfCalories, isVegetarian);

应该是这样的

ingredientArrayList.add(new Ingredient(ingredientName, pricePerOunce, numberOfCalories, isVegetarian));

您的Ingredient类也应该具有采用所有四个属性的构造函数

您已实例化ArrayList类型的成分(CLASS OBJECT),此ArrayList只能存储Ingredient类对象而不是单个属性。

答案 1 :(得分:1)

成分是一个对象,因此您的ArrayList基本上是成分对象的列表。要将Ingredient对象添加到ArrayList,您需要将对象添加到列表而不是单个值。

这样的事情:

ingredientArrayList.add(new Ingredient(ingredientName, pricePerOunce, numberOfCalories, isVegetarian));