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=""

而(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);

您的代码中发生的事情是

项目包含附加在一个对象中的“笔记本电脑 - 手表”,因此输出错误。如果您仍想对商品和商店使用不同的变量,我建议在打印时这样做

    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;
  }

}

然后我会创建一个Collection(一个List合适的)礼物并将一个新的礼物添加到 while (ans != 'n')循环中的列表中。要打印结果,我会循环礼品列表并打印出每个礼品:

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