1

ギフト レジストリにエントリを作成するプログラムを作成しようとしています。ユーザーは、希望するギフトアイテムと、これを購入できる店舗を入力できます。ユーザーが新しいアイテムの入力をやめたいと表明すると、すべてのギフトアイテムとストアの概要が表示されます。

これらは私の現在のコードです:

import java.util.*;
public class GiftRegistry
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        List<GiftRegistry> list = new ArrayList<GiftRegistry>();
        private String item;
        private String store;
        char ans;

        System.out.print("Do you wish to make a gift registry? (y/n) ");
        ans = input.nextLine().charAt(0);

        while (ans != 'n') 
        {
            GiftRegistry object = new GiftRegistry();
                System.out.print("Enter item: ");
                object.setItem(input.nextLine());
                System.out.print("Enter store: ");
                object.setStore(input.nextLine());
                System.out.print("Any more items? (y/n) ");
                ans = input.nextLine().charAt(0);
                list.add(object);
        }

         System.out.println("Gift Registry");
         for (GiftRegistry myObject : list) {
              System.out.print(myObject.getItem()+" - "+myObject.getStore());
              System.out.println();
    }
}

}

これは現在の入力です

Do you wish to make a gift registry? (y/n) y
Enter item: laptop
Enter store: Acer
Any more items? (y/n) y
Enter item: watch
Enter store: Swatch
Any more items? (y/n) n

次のような出力を作成することになっています。

Gift Registry
laptop - Acer
watch - Swatch

誰かが正しい出力を得るのを手伝ってくれますか

4

3 に答える 3

2

値を保持するカスタムオブジェクトを作成できます-

class MyObject {
    private String item;
    private String Store;

    <getter & setters>

}

そして、ユーザー入力データをリストに追加します。

List<MyObject> list = new ArrayList<MyObject>();
...
while (ans != 'n') {
    MyObject object = new MyObject();
    System.out.print("Enter item: ");
    object.setItem(input.nextLine());
    System.out.print("Enter store: ");
    object.setStore(input.nextLine());
    System.out.print("Any more items? (y/n) ");
    ans = input.nextLine().charAt(0);
    list.add(object);
}

そして、印刷する正しい方法は-

System.out.println("Gift Registry");
for (MyObject myObject : list) {
    System.out.print(myObject.getItem()+" - "+myObject.getStore());
    System.out.println();
}

出力は -

Gift Registry
laptop - Acer
watch - Swatch
于 2012-12-07T11:31:08.187 に答える
1

アイテムを保存するための単一の文字列を作成し、このように保存する必要があります

String itemandStore=""

while (ans != 'n') {

    System.out.print("Enter item: ");
    itemandStore += input.nextLine() + " - ";

    System.out.print("Enter store: ");
    itemandStore += input.nextLine() + "\n";

    System.out.print("Any more items? (y/n) ");
    ans = input.nextLine().charAt(0);

    }
System.out.println("Gift Registry\n" + item + store);

あなたのコードで何が起こるかは

item には「laptop - watch」が 1 つのオブジェクトに追加されているため、出力が正しくありません。それでもアイテムとストアに異なる変数を使用したい場合は、印刷中にこれをお勧めします

    String[] items=item.split("-");
    String[] stores=store.split("-");
     int i=0;
    while(items.length>i)
    {
    System.out.println(items[i] + " - " + stores[i]);
     i++;
    }
于 2012-12-07T11:29:14.167 に答える
1

ここでは、よりオブジェクト指向のアプローチを使用し、Giftこの構造を使用してクラスを作成し、メソッドをオーバーライドしてtoString、期待される出力に適合させます。

public class Gift{
  private String name;
  private String store;

//Getters & Setters

  public String toString(){
   return name + " " + store;
  }

}

次に、Gift のCollection(aが適切です) を作成し、ループ内Listのリストに新しい Gift を追加し ます。while (ans != 'n')結果を印刷するには、Gift List をループして、すべての Gift を出力します。

for (Gift gift: myListofGifts){
  System.out.println(gift);
}
于 2012-12-07T11:31:49.780 に答える