问题:代码只能执行一次"add"命令,然后就报错,找好久不知道问题在哪,望解答
报错图片:
代码如下
//商品类
public class Commodity {
int id;
String name;
double price;
int buynum;
}
//测试类
package shoppingCar;
import java.util.Scanner;
public class ShopcarTest {
public static void main(String[] args)
{
Commodity[] shopCar=new Commodity[100];
//操作架构
while(true)
{
System.out.println("请选择如下命令进行操作");
System.out.println("添加商品到购物车:add");
System.out.println("查询商品到购物车: query");
System.out.println("修改购买数量:update");
System.out.println("结算商品:pay");
System.out.println("输入指令:");
Scanner input=new Scanner(System.in);
String command=input.next();
switch(command) {
case "add":
{
addGoods(shopCar);
for(int i=0;i<shopCar.length;i++)
{
if(shopCar[i]!=null)
{
System.out.println(shopCar[i].id+"\t\t"+shopCar[i].name+"\t\t"+shopCar[i].price+"\t\t"+shopCar[i].buynum);
}
else
{
System.out.println("1");
}
break;
}
}
break;
case "query":
queryGoods(shopCar);
break;
case "update":
updateGoods(shopCar);
break;
case "pay":
payGoods(shopCar);
break;
default:
break;
}
}
}
//计算总价
public static void payGoods(Commodity[] shopCar)
{
double pricesum=0;
for(int i=0;i<shopCar.length;i++)
{
pricesum+=shopCar[i].price;
}
System.out.println("总金额:"+pricesum);
}
//更改购买数量
public static void updateGoods(Commodity[] shopCar)
{
Scanner input=new Scanner(System.in);
int chagenum;
int i;
System.out.println("输入你要修改商品的名称");
while(true)
{
int sig;
String upname=input.next();
for( i=0;i<shopCar.length;i++)
{
if(upname.equals(shopCar[i].name))
{
chagenum=i;
System.out.println("输入修改数量");
int num1=input.nextInt();
shopCar[i].buynum=num1;
break;
}
}
if(i==shopCar.length)
{
System.out.println("无该商品重新输入");
}
}
}
//查询商品
public static void queryGoods(Commodity[] shopCar)
{
System.out.println("商品id\t\t商品姓名\t\t商品价格\t\t购买数量\t\t");
for(int i=0;i<shopCar.length;i++)
{
if(shopCar[i]!=null)
{
System.out.println(shopCar[i].id+"\t\t"+shopCar[i].name+"\t\t"+shopCar[i].price+"\t\t"+shopCar[i].buynum);
}
else
break;
}
}
//添加商品
public static void addGoods(Commodity[] shopCar)
{
Scanner input=new Scanner(System.in);
System.out.println("请输入商品的编号");
int num;
//检查编号是否重复
while(true)
{
num=input.nextInt();
int i;
for( i=0;i<shopCar.length;i++)
{
if(shopCar[i]!=null)
{
if(num==shopCar[i].id)
{
System.out.println("编号重复");
break;
}
}
}
if(i==shopCar.length)
break;
}
System.out.println("输入商品的名称:");
String name1=input.next();
System.out.println("输入商品的价格");
double price1=input.nextDouble();
System.out.println("输入商品购买数量");
int num1=input.nextInt();
input.close();
Commodity g=new Commodity();
g.id=num;
g.buynum=num1;
g.name=name1;
g.price=price1;
for(int j=0;j<shopCar.length;j++)
{
if(shopCar[j]==null)
{
shopCar[j]=g;
break;
}
}
System.out.println("添加成功");
}
}