2017-02-07 3 views
1

ArrayListIngredientsを入力しようとしていましたが、これは成分名(文字列)、価格(ダブル)、カロリー数整数)、成分が菜食主義の場合(ブール値)。スキャナーを使用してオブジェクトのArrayListを入力

複数の成分があるので、私はArrayListを使うべきだと思った。スキャナからのデータで原料オブジェクトをどのように埋めるのですか?これは私がこれまで持っているものです。

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 
} 
+0

何の問題、あなたが書いたコードを持っていますか?また、おそらくこれに答えるために、少なくともあなたの 'Ingredient'クラスのコンストラクタを見る必要があります。 – nhouser9

+0

あなたはList of Ingredientオブジェクトを持っているので、新しいIngredientオブジェクトを作成して追加するだけです。 – NAMS

+0

'ArrayList'への挿入速度を上げるには、成分の数を[ArrayList'コンストラクタ]に渡します(https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList .html#ArrayList-int-)。 'new ArrayList <>(numberOfIngredients)' – 4castle

答えて

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

はあなたの成分クラスはまた、あなたがArrayListのインスタンス化されたすべての4つの属性

を取るコンストラクタを持つ必要があり、この

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

のようなものであるべきIngredient(CLASS OBJECT)の型で、このArrayListは個々の属性ではなくIngredientクラスオブジェクトのみを格納できます。

+0

ありがとう!私はinstathiated arrayListに関する第二の部分が意味することを理解していません。それは "タイプ成分をインスタンス化できません"と言います。これは何を意味するのでしょうか?私は、Ingredientクラスのオブジェクトを保存することで、Ingredient(成分名、オンス当たりの価格、カロリー数、菜食主義など)の属性を保存できると考えました。 – etnie1031

+0

リストを作成するとき、List を書き込んだときに、Ingredient type OBJECTを格納するListを定義しています。したがって、リストにはオブジェクトのリストしか格納できず、そのオブジェクトはIngredientクラスオブジェクトでなければなりません。あなたが最初にやったのは、あなたが物のリストに成分属性を保存しようとしていることです。オブジェクトのリストは多くのオブジェクトを持ち、各オブジェクトは多くの属性の関係を持っています –

1

成分リストはオブジェクトなので、ArrayListは基本的に成分リストのオブジェクトです。 ArrayListにIngredientオブジェクトを追加するには、個々の値ではなくオブジェクトをリストに追加する必要があります。このような

何か:

ingredientArrayList.add(new Ingredient(ingredientName, pricePerOunce, numberOfCalories, isVegetarian)); 
関連する問題