示例如下:
public class Goods {
int id;
String name;
double Price;
int buyNumber;
}
public static void main(String[] args) {
Goods [] shopCar=new Goods[100];
while (true) {
System.out.println("请您选择如下命令进行操作:");
System.out.println("添加商品到购物车:add");
System.out.println("查询购物车商品展示:query");
System.out.println("修改商品购买数量:update");
System.out.println("结算商品购买金额:pay");
Scanner sc=new Scanner(System.in);
System.out.println("请您输入命令:");
String command=sc.next();
switch(command){
case"add":
addGoods(shopCar,sc);
break;
case "query":
queryGoods(shopCar);
break;
case"update":
updateGoods(shopCar,sc);
break;
case"pay":
pay(shopCar);
break;
default:
System.out.println("没有该功能!");
}
}
}
调用方法:
private static void pay(Goods[] shopCar) {
queryGoods(shopCar);
double money=0;
for (int i = 0; i < shopCar.length; i++) {
Goods g=shopCar[i];
if (g!=null){
money+=(g.buyNumber*g.Price);
}else {
break;
}
}
System.out.println(money);
}
private static void updateGoods(Goods[] shopCar,Scanner sc) {
while (true) {
System.out.println("请您输入商品id");
int id=sc.nextInt();
Goods g=getGoodsbyId(shopCar,id);
if (g==null) {
System.out.println("对不起,您没有购买该商品");
}else {
System.out.println("请您输入"+g.name+"商品的购买数量:");
g.buyNumber=sc.nextInt();
System.out.println("修改完成!");
queryGoods(shopCar);
break;
}
}
}
private static Goods getGoodsbyId(Goods[] shopCar, int id) {
for (int i = 0; i < shopCar.length; i++) {
Goods g=shopCar[i];
if (g!=null) {
if (g.id==id){
return g;
}
}else {
return null;
}
}
return null;//找完了100个商品都没有找到id一样的商品
}
private static void queryGoods(Goods[] shopCar) {
System.out.println("========查询购物车信息如下========");
System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g=shopCar[i];
if (g !=null){
System.out.println(g.id + "\t\t" + g.name + "\t\t\t" + g.Price + "\t\t\t" + g.buyNumber);
}else {
break;
}
}
}
private static void addGoods(Goods[] shopCar,Scanner sc) {
System.out.println("请您输入购买商品的编号:");
int id=sc.nextInt();
System.out.println("请您输入购买商品的名称:");
String name=sc.next();
System.out.println("请你输入购买商品的价格:");
double Price=sc.nextDouble();
System.out.println("请您输入购买商品的数量:");
int buyNumber=sc.nextInt();
Goods g=new Goods();
g.id=id;
g.name=name;
g.Price=Price;
g.buyNumber=buyNumber;
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i]==null){
shopCar[i]=g;
break;
}
}
System.out.println("您的商品:"+g.name+"添加购物车成功。");
}
}
出现过的问题:
由于在编写"while"的死循环时将第一行的数组定义的代码也包括进去了,导致在执行时每次数组的地址都相当于重置了。后经检查修复原了这个bug,结果如上述所示。