请问我的代码为什么无法显示商品信息

请问我的代码为什么无法显示商品信息

package cart;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class ManageGoods {
    private Set<GoodsInformation> goodsSet = new HashSet<GoodsInformation>();

    // 商品信息导入的方法
    public void importGoods(GoodsInformation goods) {
        goodsSet.add(goods);
    }

    // 用迭代器输出
    public void despalyAllGoods() {
        Iterator<GoodsInformation> iterator = goodsSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    // 根据输入数字进行操作
    public void choice() {
        System.out.println("请输入数字进行商品管理");
        System.out.println("**商品管理**");
        System.out.println("1--商品信息导入");
        System.out.println("2--显示所有商品信息");
        System.out.println("9--返回上一级菜单");   
        int i =0;

        do {
            Scanner scanner = new Scanner(System.in);
            i = scanner.nextInt();
            switch (i) {
            case 1:
                GoodsInformation one = new GoodsInformation("goods001", "名称:手机  价格:", 5000, "描述:iphone手机");
                GoodsInformation two = new GoodsInformation("goods002", "名称:饮水机  价格:", 2999, "描述:带净化功能");
                GoodsInformation three = new GoodsInformation("goods003", "名称:笔记本电脑  价格:", 8000, "描述:dell XPS笔记本");
                ManageGoods four = new ManageGoods();
                // 导入信息
                four.importGoods(one);
                four.importGoods(two);
                four.importGoods(three);

                System.out.println("商品信息导入");
                System.out.println("导入成功");
                break;
            case 2:
                Iterator<GoodsInformation> iterator = goodsSet.iterator();//goodsSet里是空的?
                while (iterator.hasNext()) {
                    System.out.println(iterator.next());
                }
                break;
            // case 9:
            // System.out.println("**********************");
            // System.out.println("**主菜单**");
            // System.out.println("1--商品管理");
            // System.out.println("2--购物车");
            // System.out.println("0--退出");
            // System.out.println("**********************");
            // System.out.println("请从键盘输入数字");
            // break;
            default:
                System.out.println("输入错误");
                break;
            }
        } while (i != 9);
        System.out.println("**********************");
        System.out.println("**主菜单**");
        System.out.println("1--商品管理");
        System.out.println("2--购物车");
        System.out.println("0--退出");
        System.out.println("**********************");
        System.out.println("请从键盘输入数字");
    }

    public ManageGoods(Set<GoodsInformation> goodsSet) {
        super();
        this.goodsSet = goodsSet;
    }

    public ManageGoods() {
        // TODO 自动生成的构造函数存根
    }

    public Set<GoodsInformation> getGoodsSet() {
        return goodsSet;
    }

    public void setGoodsSet(Set<GoodsInformation> goodsSet) {
        this.goodsSet = goodsSet;
    }

}


goodsSet里面应该不是空的

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕珊 2017-10-02 22:33:24

在choice()方法导入信息前定义了一个ManageGoods类的对象,现在就是在ManageGoods类里面,如果定义一个新的对象,与输出商品信息的代码使用的就不是一个集合了。所以,把choice()方法中的ManageGoods对象定义去掉,直接使用goodsSet集合即可。祝学习愉快!

Tender10 2017-09-10 12:48:03

goodsSet里面是不是空的,其实建议你自己可以做一个尝试,比如写一个判断语句,判断goodsSet是否为空,如果是就输出null。这样就很明确的知道goodsSet到底是不是为空了。你可以自己先做一个判断,这样印象会更加深刻,如果还有什么不明白的地方,可以继续提问。

  • 我的也一样,断点时集合里面是有信息的,但是执行到while循环的时候就不执行了,直接跳过,这怎么回事
    2017-10-02 20:30:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师