关于视频中异常的问题

关于视频中异常的问题

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

请问老师上述异常发生时是否try代码块中产生异常的语句是不执行的?直接进入catch块?

还有就是为何会突然连续打印三条输出语句而少一个键盘输入语句的执行



正在回答

登陆购买课程后可参与讨论,去登陆

2回答

http://img1.sycdn.imooc.com//climg/5a9cd8ff0001725603640268.jpg

你说的是上面这种情况吗?当输入商品价格不是数字时,会练习打印几条语句。

如果是的话,这种是去掉最上面代码中console.next();的情况,因为console.nextDouble()本来是接收数据的,但是输入的是字符串,它就接收不了数据了。但是输入的数据要有接收的地方才不会报错,所以这里面写了一个console.next();

祝学习愉快!

  • 我想跑路 提问者 #1
    非常感谢!
    2018-03-05 16:46:45
THappy 2018-03-04 00:18:30

try代码块中产生异常的语句执行了,抛出了异常,catch块捕获了这个异常。

你说的连续打印三条输出语句是指哪里呢?是下图中的效果吗?这样的效果是正确的。祝学习愉快

http://img1.sycdn.imooc.com//climg/5a9aca9c00019ff704000251.jpg

  • 提问者 我想跑路 #1
    是那个输入adb之后,连续输出请输入第一条商品信息; 请输入商品编号; 请输入商品名称 这是为什么不执行键盘接收而直接输出
    2018-03-04 13:54:02
  • 好帮手慕珊 回复 提问者 我想跑路 #2
    你把代码贴完整吧,我们运行一下看看效果。
    2018-03-05 10:18:07
  • 提问者 我想跑路 回复 好帮手慕珊 #3
    import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; public class GoodsTest { public static void main(String[] args) { Scanner console = new Scanner(System.in); // 定义HashMap对象 Map<String, Goods> goodsMap = new HashMap<String, Goods>(); System.out.println("请输入三条商品信息:"); int i = 0; while (i < 3) { System.out.println("请输入第" + (i + 1) + "条商品信息:"); System.out.println("请输入商品编号:"); String goodsId = console.next(); // 判断商品编号id是否存在 if (goodsMap.containsKey(goodsId)) { System.out.println("该商品编号已经存在!请重新输入!"); continue; } System.out.println("请输入商品名称:"); String goodsName = console.next(); System.out.println("请输入商品价格:"); double goodsPrice = 0; try { goodsPrice = console.nextDouble(); } catch (java.util.InputMismatchException e) { System.out.println("商品价格的格式不正确,请输入数值型数据!"); //console.next();假设不要这行语句 continue; } Goods goods = new Goods(goodsId, goodsName, goodsPrice); // 将商品信息添加到HashMap中 goodsMap.put(goodsId, goods); i++; } // 遍历Map,输出商品信息 System.out.println("商品的全部信息为:"); Iterator<Goods> itGoods = goodsMap.values().iterator(); while (itGoods.hasNext()) { System.out.println(itGoods.next()); } } }
    2018-03-05 10:29:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师