|
发表于 2021-9-7 20:49:02
|
显示全部楼层
本帖最后由 巴巴鲁 于 2021-9-7 20:53 编辑
你看看我的代码,我注释那句你看看位置,自己体会一下,我可能没有表达清楚,反正你写的代码第一次year为3.4的话,第二次,第三次......都是3.4, year = scan.nextInt();不会执行
- package com.my;
- import java.util.InputMismatchException;
- import java.util.Scanner;
- public class Test
- {
- public static void main(String[]args)
- {
- int year = 0, month = 0, day = 0;
- Scanner scan = new Scanner(System.in);
- while(true)
- {
- System.out.println("请输入年份(>0):");
- year = scan.nextInt(); // 这句代码在try外面,第一次如果输入小数,第二次就会产生异常,不会执行try语句块异常后的语句,所以会出现死循环
- try
- {
- System.out.println("try语句块结束了");
- }
- catch (InputMismatchException e)
- {
- System.out.println("您输入的是"+year);
- System.out.println("输入的年份类型不匹配,请输入正整数");
- }
- if(year > 0)
- {
- break;
- }
- else
- {
- System.out.println("年份不能为负,请输入正数!");
- }
- }
- scan.close();
- }
- }
复制代码 |
|