0

以下のコードでは、名前、コスト、および優先度をオブジェクトに取り込もうとしています。for ループを使用して 7 つのオブジェクトを作成し、各オブジェクトを itemData という ArrayList に追加します。

ループが実行されるたびに、コードがアイテムに名前、コスト、および優先度を保持しているとは思いません。どんな提案でも大歓迎です。

import java.util.*;


public class Main {

public static List<ItemData> itemData = new ArrayList<ItemData>();
public static void main(String[] args) {
    int i=0;
    //String name1;
    //int priority1; 
    //double cost1;

   String[] item  = new String[7];

   for (i=0; i<item.length; i++)  {
       Scanner keyboard = new Scanner(System.in);
       System.out.println("Enter item name " + i);
       String name = keyboard.next();
       Scanner keyboard2 = new Scanner(System.in);
       System.out.println("Enter the price of item " + i);
       double cost = keyboard2.nextDouble();
       Scanner keyboard3 = new Scanner(System.in);
       System.out.println("Enter Priority Number " + i);
       int priority = keyboard3.nextInt();

       ItemData grocItem = new ItemData(name, cost, priority);
       itemData.add(grocItem); // add grocery items to itemData ArrayList

   };

  System.out.println(item.name)

  // System.out.println(+ grocItem);
    }
    //How do I add grocItem to an Array list of other grocItems (6 grocItems from user input array item)
    //Main.itemData.add(groclist);


}


    Itemdata class:
    public class ItemData{
    public ItemData(String name, double cost, int priority){

// Main.groclist.add(grocItem);

4

4 に答える 4

1

これらの行を削除します - 使用していないitemので、コードから完全に削除してください:

String[] item  = new String[7];

System.out.println(item.name)

がなくなったのでitem、for ループを修正します。

for (i=0; i<7; i++) { // just code the loop to iterate 7 times

toString()次に、メソッドをに追加しItemDataます。これは、次のステップで読み取り可能な出力を印刷するために必要です。

// return what you want - this is a reasonable example
public String toString() {
    return name + ", " + cost + " - priority " + priority;
}

最後に、ループの後にリストを出力します。

System.out.println(itemData};

そうすれば、あなたが今抱えている問題はほとんど解決するはずです。

于 2013-07-20T03:58:49.893 に答える
1

あなたのリストは大丈夫です。リストの項目を間違った方法で印刷しようとしているだけです。たとえば、for ループの後に次のようにする必要があります。

for(ItemData someItem : itemData){
    System.out.println("\nName: " + someItem.name + "\tCost: " + someItem.cost + "\tPriority: " + someItem.priority);
}

ロングショットでコードを改善できます。

編集:

あなたが学びたいと思っているなら、ここにあなたがやろうとしていることのより良いバージョンがあります-

ItemData を定義しましょう (下の ItemData を ItemData.java ファイルに保存します)-

public class ItemData {

    private String name;
    private double cost;
    private int priority;

    public ItemData(String name, double cost, int priority){
        this.name = name;
        this.cost = cost;
        this.priority = priority;
    }

    public void setName(String name){
        this.name = name;
    }

    public void setCost(double cost){
        this.cost = cost;
    }

    public void setPriority(int priority){
        this.priority = priority;
    }

    public String getName(){
        return this.name;
    }

    public double getCost(){
        return this.cost;
    }

    public int getPriority(){
        return this.priority;
    }
}

ItemData ができたので、次のように使用できます (以下の GroceryProgram を、ItemData.java と同じディレクトリにある GroceryProgram.java という名前のファイルに保存します)-

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class GroceryProgram {

    private final static int GROC_SIZE = 6;
    private final List<ItemData> itemData = new ArrayList<ItemData>();

    private void setUpList(){

        Scanner keyboard = new Scanner(System.in);

        for (int i = 0; i < GROC_SIZE; i++)  {

               System.out.print("\nEnter item name (" + i + ") : ");               
               String name = keyboard.next();

               System.out.print("\nEnter the price of item (" + i + ") : ");
               double cost = keyboard.nextDouble();

               System.out.print("\nEnter Priority Number (" + i + ") : ");
               int priority = keyboard.nextInt();

               ItemData grocItem = new ItemData(name, cost, priority);
               itemData.add(grocItem); // add grocery items to itemData ArrayList
        }

        keyboard.close();
    }

    private void displayListItems(){

        for(ItemData someItem : itemData){
           System.out.println("\nName: " + someItem.getName() + "\tCost: " + someItem.getCost() + "\tPriority: " + someItem.getPriority());
        }

    }

    public static void main(String[] args) {

        GroceryProgram groProgram = new GroceryProgram();
        groProgram.setUpList();
        groProgram.displayListItems();

    }

}

コンパイルするには、-

javac 食料品プログラム.java

実行するには-

java 食料品プログラム

質問無し?

于 2013-07-20T02:30:05.627 に答える
0

String name = keyboard.next();

名前が 2 語以上になることはありますか? あなたは使いたいかもしれませんkeyboard.nextLine()

于 2013-07-20T02:23:15.387 に答える