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

java集合:商品信息添加优化,第1张

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

在上一节中,向字典中添加了商品信息,其中商品编号作为字典的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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4670583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存