空指针异常,我想不出能怎么办了。。。
package com.imooc.goods;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//实例化4个商品对象
Goods a=new Goods("S0001","洗衣机",1500.00,"洗衣机可洗衣服");
Goods b=new Goods("S0002","电脑",12000.00,"电脑可以上网");
Goods c=new Goods("S0003","空调",4000.00,"开空调很凉快");
Goods d=new Goods("S0004","冰箱",8000.00,"冰箱可以存储食物");
GoodsManage gm=new GoodsManage();;
ShoppingCart sc=new ShoppingCart();
Scanner s=new Scanner(System.in);
boolean flag=false;
int n=0;
while(flag==false){
System.out.println("***********************************");
System.out.println(" 主菜单 ");
System.out.println(" 1-商品管理 ");
System.out.println(" 2-购物车 ");
System.out.println(" 0-退出 ");
System.out.println("***********************************");
n=s.nextInt();
flag=true;
switch(n){
case 1:
while(true){
System.out.println("***********************************");
System.out.println(" 商品管理 ");
System.out.println(" 1-商品信息导入 ");
System.out.println(" 2-显示所有商品信息 ");
System.out.println(" 9-返回上一级菜单 ");
System.out.println("***********************************");
n=s.nextInt();
switch(n){
case 1: gm.importGoods();
break;
case 2:gm.displayAllGoods();
break;
}
if(n==9){
flag=false;
break;
}
}
break;
case 2:while(flag==true){
System.out.println("***********************************");
System.out.println(" 购物车管理 ");
System.out.println(" 1-添加商品到购物车 ");
System.out.println(" 2-修改购物车中的商品数量 ");
System.out.println(" 3-显示购物车中的所有商品信息 ");
System.out.println(" 4-结算 ");
System.out.println(" 9-返回上一级菜单 ");
System.out.println("***********************************");
n=s.nextInt();
switch(n){
case 1:sc.addGoodsToCart(gm);
break;
case 2:sc.updateNumInCart();
break;
case 3:sc.displayAllInCart();
break;
case 4:sc.settleAccount();
break;
}
if(n==9){
flag=false;
break;
}
}
break;
case 0:
System.out.println("退出!");
break;
}
}
}
}
package com.imooc.goods;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* 商品管理类,属性为存放商品的容器(goodsSet),Set类型
* @author idea
*
*/
public class GoodsManage {
private Set<Goods> goods;//超市系统中的商品
public Set<Goods> getGoods() {
return goods;
}
public void setGoods(Set<Goods> goods) {
this.goods = goods;
}
public GoodsManage(){}//无参构造
public GoodsManage(Set<Goods> goods){
this.setGoods(goods);
}
Set<Goods> set=new HashSet<Goods>();
//商品信息导入方法
public void importGoods(){
Goods a=new Goods("S0001","洗衣机",1500.00,"洗衣机可洗衣服");
Goods b=new Goods("S0002","电脑",12000.00,"电脑可以上网");
Goods c=new Goods("S0003","空调",4000.00,"开空调很凉快");
Goods d=new Goods("S0004","冰箱",8000.00,"冰箱可以存储食物");
set.add(a);
set.add(b);
set.add(c);
set.add(d);
System.out.println("商品信息导入成功!");
}
//显示商品信息方法
public void displayAllGoods(){
Iterator<Goods> it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
package com.imooc.goods;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
/**
* 购物车管理类
* @author idea
*
*/
public class ShoppingCart {
private Map<String, GoodsInCart> shoppingCart;//购物车中的商品
public Map<String, GoodsInCart> getShoppingCart() {
return shoppingCart;
}
public void setShoppingCart(Map<String,GoodsInCart> shoppingCart) {
this.shoppingCart = shoppingCart;
}
public ShoppingCart(){}
public ShoppingCart(Map<String,GoodsInCart> shoppingCart){
this.setShoppingCart(shoppingCart);
}
Map<String,GoodsInCart> shoppingCart1=new HashMap<String,GoodsInCart>();
Scanner scanner=new Scanner(System.in);
/**
* 通过商品编号找到对应的要购买的商品
* @param gm
*/
public void addGoodsToCart(GoodsManage gm){//添加商品到购物车
Set<Goods> set=gm.getGoods();//將所有商品存入集合中
String str=null;
boolean flag=false;
Goods goods=null;
//如果未导入商品列表则提示导入
if(gm.getGoods().size()==0){
System.out.println("请先导入商品列表!");
}else{
gm.displayAllGoods();//已导入则列出商品列表
for(Goods o:set){
System.out.println("请输入要购买的商品的编号:");
str=scanner.next();
if(o.getGoodsID().equals(str)){
flag=true;
goods=o;
break;
}
}
if(flag=true){
System.out.println("请输入该购买的数量:");
int n=scanner.nextInt();
GoodsInCart gc=new GoodsInCart(goods,n);
shoppingCart1.put(str, gc);
}else{
System.out.println("没找到该商品!");
}
}
}53
收起
正在回答 回答被采纳积分+1
6回答
一叶知秋519
2017-12-22 14:27:37
package com.imooc.goods;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* 商品管理类,属性为存放商品的容器(goodsSet),Set类型
* @author idea
*
*/
public class GoodsManage {
private Set<Goods> goods;//超市系统中的商品
public Set<Goods> getGoods() {
return goods;
}
public void setGoods(Set<Goods> goods) {
this.goods = goods;
}
public GoodsManage(){
goods = new HashSet<Goods>();
}
//无参构造
public GoodsManage(Set<Goods> goods){
this.setGoods(goods);
}
Set<Goods> set=new HashSet<Goods>();
//商品信息导入方法
public void importGoods(){
Goods a=new Goods("S0001","洗衣机",1500.00,"洗衣机可洗衣服");
Goods b=new Goods("S0002","电脑",12000.00,"电脑可以上网");
Goods c=new Goods("S0003","空调",4000.00,"开空调很凉快");
Goods d=new Goods("S0004","冰箱",8000.00,"冰箱可以存储食物");
set.add(a);
set.add(b);
set.add(c);
set.add(d);
System.out.println("商品信息导入成功!");
}
//显示商品信息方法
public void displayAllGoods(){
Iterator<Goods> it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}你先把这两个类覆盖一下,看是不是还有空指针。祝学习愉快
一叶知秋519
2017-12-22 14:26:09
package com.imooc.goods;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//实例化4个商品对象
Goods a=new Goods("S0001","洗衣机",1500.00,"洗衣机可洗衣服");
Goods b=new Goods("S0002","电脑",12000.00,"电脑可以上网");
Goods c=new Goods("S0003","空调",4000.00,"开空调很凉快");
Goods d=new Goods("S0004","冰箱",8000.00,"冰箱可以存储食物");
GoodsManage gm=new GoodsManage();;
ShoppingCart sc=new ShoppingCart();
Scanner s=new Scanner(System.in);
boolean flag=false;
int n=0;
while(flag==false){
System.out.println("***********************************");
System.out.println(" 主菜单 ");
System.out.println(" 1-商品管理 ");
System.out.println(" 2-购物车 ");
System.out.println(" 0-退出 ");
System.out.println("***********************************");
n=s.nextInt();
flag=true;
switch(n){
case 1:
while(true){
System.out.println("***********************************");
System.out.println(" 商品管理 ");
System.out.println(" 1-商品信息导入 ");
System.out.println(" 2-显示所有商品信息 ");
System.out.println(" 9-返回上一级菜单 ");
System.out.println("***********************************");
n=s.nextInt();
switch(n){
case 1: gm.importGoods();
break;
case 2:gm.displayAllGoods();
break;
}
if(n==9){
flag=false;
break;
}
}
break;
case 2:while(flag==true){
System.out.println("***********************************");
System.out.println(" 购物车管理 ");
System.out.println(" 1-添加商品到购物车 ");
System.out.println(" 2-修改购物车中的商品数量 ");
System.out.println(" 3-显示购物车中的所有商品信息 ");
System.out.println(" 4-结算 ");
System.out.println(" 9-返回上一级菜单 ");
System.out.println("***********************************");
n=s.nextInt();
switch(n){
case 1:sc.addGoodsToCart(gm);
break;
// case 2:sc.updateNumInCart();
// break;
// case 3:sc.displayAllInCart();
// break;
// case 4:sc.settleAccount();
// break;
}
if(n==9){
flag=false;
break;
}
}
break;
case 0:
System.out.println("退出!");
break;
}
}
}
}这是我调试的你的代码,没有出现空指针。你试下
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程

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