在上一节中,向字典中添加了商品信息,其中商品编号作为字典的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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)