主方法里导入Set后 后方法里调用显示为空为什么?
package goods;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class GoodsManage extends Goods {
private Set<Goods> goodsSet = new HashSet<Goods>();
public GoodsManage() {
}
public Set getGoodsSet() {
return goodsSet;
}
public void setGoodsSet(Set goodsSet) {
this.goodsSet = goodsSet;
}
//商品导入方法
public void importGoods() {
System.out.println("商品信息导入:");
Goods g1 = new Goods("goods004", "手机", 2300, "android手机");
Goods g2 = new Goods("goods002", "饮水机", 299, "带净化功能的饮水机");
Goods g3 = new Goods("goods003", "笔记本电脑", 4999, "15寸笔记本");
Goods g4 = new Goods("goods001", "水杯", 56, "不锈钢水杯");
goodsSet.add(g1);
goodsSet.add(g2);
goodsSet.add(g3);
goodsSet.add(g4);
this.setGoodsSet(goodsSet);
System.out.println("导入成功!");
}
//显示所有商品信息
public void displayAllGoods() {
if (goodsSet.isEmpty()) {
System.out.println("还没有商品,请导入商品");
}
Iterator it=goodsSet.iterator();
while (it.hasNext()){
System.out.println("所有的商品信息为:");
System.out.println(it.next());
}
}
}
//主方法
import goods.GoodsManage;
import goods.Info;
import goods.ShoppingCart;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
Info info = new Info();
Scanner sc = new Scanner(System.in);
GoodsManage goodsManage = new GoodsManage();
ShoppingCart shoppingCart = new ShoppingCart();
int a, b, c;
while (true) {
boolean f = true;
info.mainMenu();
try {
a = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入错误请重新输入!");
sc.next();
continue;
}
switch (a) {
case 1:
while (f) {
info.manage();
System.out.println("请输入对应的数字进行商品信息的管理:");
try {
b = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入错误请重新输入!");
sc.next();
continue;
}
switch (b) {
case 1:
goodsManage.importGoods();
break;
case 2:
goodsManage.displayAllGoods();
break;
case 9:
f = false;
break;
default:
System.out.println("请输入对应的数字!");
break;
}
}
break;
case 2:
while (f) {
info.shoppoing();
System.out.println("请输入对应的数字对购物车进行管理:");
try {
c = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入错误请重新输入!");
sc.next();
continue;
}
switch (c) {
case 1:
//addGoodsToCart方法里无法调用 显示Set为空
public void addGoodsToCart() {
goodsManage.displayAllGoods();
System.out.println("请输入要添加的商品编号:");
String s = sc.next();
System.out.println("请输入想要添加的数量:");
int i = sc.nextInt();
Iterator itGoods = goodsManage.getGoodsSet().iterator();
while (itGoods.hasNext()) {
if (goodsManage.getGoodsSet().contains(s)) {
gi.setGoods((Goods) itGoods.next());
gi.setNum(i);
shoppingCart.put(s, gi);
}else
System.out.println("没有这个商品!");
}
}//
shoppingCart.addGoodsToCart();
break;
case 2:
shoppingCart.updateNumInCart();
break;
case 3:
shoppingCart.displayAllInCart();
break;
case 4:
shoppingCart.settleAccounts();
break;
case 9:
f = false;
break;
default:
System.out.println("请重新输入!");
}
}
break;
case 0:
System.out.println("退出程序");
return;
default:
System.out.println("请输入对应的数字!");
}
}
}
}33
收起
正在回答
3回答
没明白你的意思,1)”导入Set“是什么意思?是”import java.util.Set;“吗?2)”后方法里调用显示为空“是什么意思?你是说输出结果为空?具体哪一行?
very_well
2017-10-06 20:25:50
public void addGoodsToCart()这里需要设置参数,把之前已经导入过商品的goodsManage传进来,不然在方法体内的 第一句 goodsManage.displayAllGoods() 的goodsManage 实际只是一个局部变量(新的对象,跟主方法定义的goodsManage对象无关),所以建议方法体改为 public void addGoodsToCart(GoodsManage goodsManage),将主方法调用的代码改为 shoppingCart.addGoodsToCart(goodsManage)
静水流深3932456
2017-08-25 14:17:14
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星