java封装后怎么让用户输入指定的数据类型?

img

我指定age这里只能输入int类型,然后一旦输入了其他类型的就报错如下图:

img


但是我要用户输入了其他类型不是报错,而是执行第19行这样的输出语句来提示“你输入的不正确”,
所以在15-20这个方法里要怎么写才能不报错,而是转为输出语句来提示?

在main函数捕获InputMismatchException 这个异常吧

try {
    xxxx // 这里是你的main方法的输入代码
} catch(InputMismatchException e) {
System.out.println("输入的年龄不正确")
}

Scanner有方法可以判断输入的是不是想要的类型的,比如说int就是hasNextInt(),输入的值可以解析成int就返回true,如果不行返回false。Scanner里面还有其他类型的判断方法,你可以自己去看看有哪些,idea可以点到源码里面。

首先写个输出,提示只能输数字,然后写个while循环,条件就是判断输入的是否是数字以及你要求的那个范围,如果输入不正确就一直循环让他输

首先,那个scannerAge.nextInt()就限定了你通过控制台输入的值只能是int类型的,
其次那个setAge方法也是int类型的,所以其他类型的值根本就进不去,也就实现不了你说的效果。
要想实现你的效果
1.scannerAge.nextInt()这不能限定输入的是int,可以用scannerAge.next(),输入字符串就可以
2.setAge()方法的入参也不能用int,也得用String
3.然后setAg()方法里的逻辑就是可以先把String转成int,可以用封装类Integer.parseInt()方法,如果能转成功,就说明输入的是一个int,如果不能说明不是int,就可以提示19行的内容,能转成功的话也可以看看age的范围符不符合你的要求,不符合的话也报19行的那个提示