java集合:商品信息添加优化

博客内容讲述了在程序中如何优化商品信息管理,避免重复添加相同编号的商品,并通过异常处理确保用户输入的价格为有效数值。在优化后,程序能够提示用户重新输入错误的商品编号或价格,保证数据的准确性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一节中,向字典中添加了商品信息,其中商品编号作为字典的Key值。
若重复输入了商品编号,会是如下结果:

请输入三条商品信息:
请输入第1条信息:
请输入商品编号: 
s001
请输入商品名称:
冰箱
请输入商品价格:
5000
请输入第2条信息:
请输入商品编号: 
s001
请输入商品名称:
电视机
请输入商品价格:
3000
请输入第3条信息:
请输入商品编号:
s003
请输入商品名称:
洗衣机
请输入商品价格:
6000
商品的全部信息为:
商品编号:s003, 商品名称:洗衣机, 商品价格:6000.0
商品编号:s001, 商品名称:电视机, 商品价格:3000.0

可看到同一商品编号,只添加成功了第二次输入的信息。
现对该情况进行优化:

while(i < 3){
    System.out.println("请输入第" + (i+1) + "条信息:");
    System.out.println("请输入商品编号:");
    String goodsId = console.next();
    //判断当前输入的goodsId在goodMap中是否已经存在
    if(goodsMap.containsKey(goodsId)){
        System.out.println("该商品编号已经存在!请重新输入!");
        continue;
    }
    System.out.println("请输入商品名称:");
    String goodsName = console.next();
    System.out.println("请输入商品价格:");
    double goodsPrice = console.nextDouble();

    Goods goods = new Goods(goodsId, goodsName, goodsPrice);
    //将商品信息添加到HashMap中
    goodsMap.put(goodsId, goods);
    i ++;
}

输出:

请输入三条商品信息:
请输入第1条信息:
请输入商品编号:
s001
请输入商品名称:
电视机
请输入商品价格:
3000
请输入第2条信息:
请输入商品编号:
s001
该商品编号已经存在!请重新输入!
请输入第2条信息:
请输入商品编号:

若将商品价格的格式输入错误,将会报出如下错误:

请输入商品价格:
dfbv
Exception in thread "main" java.util.InputMismatchException
        at java.base/java.util.Scanner.throwFor(Scanner.java:939)
        at java.base/java.util.Scanner.next(Scanner.java:1594)
        at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
        at java_set.GoodsTest.main(GoodsTest.java:26)

使用try-catch抛出异常:

while(i < 3){
    System.out.println("请输入第" + (i+1) + "条信息:");
    System.out.println("请输入商品编号:");
    String goodsId = console.next();
    //判断当前输入的goodsId在goodMap中是否已经存在
    if(goodsMap.containsKey(goodsId)){
        System.out.println("该商品编号已经存在!请重新输入!");
        continue;
    }
    System.out.println("请输入商品名称:");
    String goodsName = console.next();
    System.out.println("请输入商品价格:");
    double goodsPrice;
    try{
        goodsPrice = console.nextDouble();
    }catch(java.util.InputMismatchException e){
        System.out.println("商品价格的格式不正确,请输入数值型数据!");
        continue;
    }

    Goods goods = new Goods(goodsId, goodsName, goodsPrice);
    //将商品信息添加到HashMap中
    goodsMap.put(goodsId, goods);
    i ++;
}

输出:

请输入三条商品信息:
请输入第1条信息:
请输入商品编号:
s001
请输入商品名称:
电视机
请输入商品价格:
dgf
商品价格的格式不正确,请输入数值型数据!
请输入第1条信息:
请输入商品编号:
请输入商品名称:
电视机
请输入商品价格:
3000
请输入第2条信息:
请输入商品编号:
s002
请输入商品名称:
冰箱
请输入商品价格:
5000
请输入第3条信息:
请输入商品编号:
s003
请输入商品名称:
洗衣机
请输入商品价格:
5000
商品的全部信息为:
商品编号:dgf, 商品名称:电视机, 商品价格:3000.0
商品编号:s003, 商品名称:洗衣机, 商品价格:5000.0
商品编号:s002, 商品名称:冰箱, 商品价格:5000.0

可看到,当输入错误重新输入时,直接跳过了商品编号的输入,而结果是跳过的商品编号对应了之前输入错误的信息,需要再次添加一句接收数据的语句:

try{
	goodsPrice = console.nextDouble();
}catch(java.util.InputMismatchException e){
    System.out.println("商品价格的格式不正确,请输入数值型数据!");
    console.next();
    continue;
}

输出:

请输入三条商品信息:
请输入第1条信息:
请输入商品编号:
s001
请输入商品名称:
电视机
请输入商品价格:
3000
请输入第2条信息:
请输入商品编号:
s002
请输入商品名称:
冰箱
请输入商品价格:
3000 
请输入第3条信息:
请输入商品编号:
s003
请输入商品名称:
洗衣机
请输入商品价格:
df  
商品价格的格式不正确,请输入数值型数据!
请输入第3条信息:
请输入商品编号:
s003
请输入商品名称:
洗衣机
请输入商品价格:
5000
商品的全部信息为:
商品编号:s003, 商品名称:洗衣机, 商品价格:5000.0
商品编号:s002, 商品名称:冰箱, 商品价格:3000.0
商品编号:s001, 商品名称:电视机, 商品价格:3000.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值