本帖最后由 巴巴鲁 于 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();
}
}
|