5-2修改数量不知道为什么错了
package com.imooc.goods;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class ShoppingCart {
private Map<String, GoodsInCart> shoppingCart;
Scanner sc = new Scanner(System.in);
public ShoppingCart() {
shoppingCart = new HashMap<String,GoodsInCart>();
}
public ShoppingCart(Map<String, GoodsInCart> shoppingCart) {
this.shoppingCart = shoppingCart;
}
public Map<String, GoodsInCart> getShoppingCart() {
return shoppingCart;
}
public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) {
this.shoppingCart = shoppingCart;
}
public void addGoodsToCart(GoodsManage gm) { // 添加商品到购物车
gm.displayAllGoods();
Iterator<Goods> it = gm.getGoodsSet().iterator();
boolean flag = true;
while (flag) {
System.out.println("请输入要添加的商品编号:");
String id = sc.next();
GoodsInCart gic = new GoodsInCart();
while (it.hasNext()) {
Goods g = it.next();
if (id.equals(g.getGoodsId())) {
gic.setGoods(g);
break;
}
}
System.out.println("请输入要添加的商品数量:");
int num = sc.nextInt();
gic.setNum(num);
shoppingCart.put(id, gic);
if(num>0)
flag = false;
else
System.out.println("输入错误,请重新输入!");
continue;
}
}
public void updateNumInCart() { // 修改购物车中的商品数量
Iterator<GoodsInCart> it = shoppingCart.values().iterator();
System.out.println("请输入要修改的商品编号:");
String id = sc.next();
GoodsInCart gic = new GoodsInCart();
while (it.hasNext()) {
if (id.equals(gic.getGoods().getGoodsId())){
it.next();
break;
}else{
System.out.println("商品编号不存在");
continue;
}
}
System.out.println("请输入要修改的商品数量:");
int num = sc.nextInt();
gic.setNum(num);
if(num==0){
System.out.println("因为商品数量为0,商品被移除");
shoppingCart.remove(id,gic);
}else{
shoppingCart.put(id, gic);
}
}
public void displayAllInCart() { // 显示购物车中的所有商品
if (shoppingCart.size() != 0) {
Iterator<GoodsInCart> it = shoppingCart.values().iterator();
while (it.hasNext()) {
GoodsInCart gic = it.next();
Goods g = gic.getGoods();
System.out.println("商品编号:" + g.getGoodsId() + ",商品名称:" + g.getGoodsName() + ",商品价格:" + g.getPrice()
+ ",商品描述:" + g.getGoodsDesp() + ",商品数量:" + gic.getNum());
}
} else {
System.out.println("购物车是空的哟,赶紧装满吧~");
}
}
public void settleAccounts() { // 结算
double sum = 0;
Iterator<GoodsInCart> it = shoppingCart.values().iterator();
while (it.hasNext()) {
GoodsInCart gic = it.next();
Goods g = gic.getGoods();
System.out.println("商品编号:" + g.getGoodsId() + ",商品名称:" + g.getGoodsName() + ",商品价格:" + g.getPrice()
+ ",商品描述:" + g.getGoodsDesp() + ",商品数量:" + gic.getNum());
double sum1 = g.getPrice() * gic.getNum();
sum = sum + sum1;
}
System.out.println("商品的总价为:" + sum);
shoppingCart.clear();
}
}18
收起
正在回答
2回答
你好,以下是调试后的代码,修改数量时,直接在判断存在的if语句中进行,gic也定义到while循环内,即:
public void updateNumInCart() { // 修改购物车中的商品数量
//Scanner sc=new Scanner(System.in);
Iterator<GoodsInCart> it = shoppingCart.values().iterator();
System.out.println("请输入要修改的商品编号:");
String id = sc.next();
// GoodsInCart gic = new GoodsInCart();
while (it.hasNext()) {
GoodsInCart gic = it.next();
if (id.equals(gic.getGoods().getGoodsId())){
System.out.println("请输入要修改的商品数量:");
int num = sc.nextInt();
gic.setNum(num);
if(num==0){
System.out.println("因为商品数量为0,商品被移除");
shoppingCart.remove(id,gic);
}else{
shoppingCart.put(id, gic);
}
break;
}else{
System.out.println("商品编号不存在");
continue;
}
}
}如果还有问题,可以再次提问。祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星