java - 如果可以的话,我可以尝试在设置器中捕获异常吗?我该如何正确地做到这一点?
问题描述
我想要发生的是让用户输入年龄并让程序使用getter和setter,同时还检查异常,如果它确实捕获了异常,则必须再次运行该方法。
导入 java.util.Scanner;
公共类主要{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
TestPatient patientZero = new TestPatient();
patientZero.setAge(in.nextInt());
System.out.println(patientZero.getAge());
}
}
// 病人分类
导入 java.util.InputMismatchException;导入 java.util.Scanner;
公共类 TestPatient { 私人 int 年龄;
public int getAge(){
return age;
}
public void setAge(int newAge){
Scanner in = new Scanner(System.in);
int age;
boolean success = false;
try {
System.out.print("Enter in Your age:");
age = in.nextInt();
success = true;
} catch (InputMismatchException ex) {
System.out.println("Im sorry, please enter just you age.\nTry again");
}
this.age=newAge;
}
}
解决方案
使用while
循环。您也不需要该newAge
参数,因为您正在读取用户输入。
public void setAge(){
int age;
Scanner in = new Scanner(System.in);
boolean success = false;
while (!success) {
try {
System.out.print("Enter in Your age:");
age = in.nextInt();
success = true;
} catch (InputMismatchException ex) {
success = false;
System.out.println("Im sorry, please enter just you age.\nTry again");
}
}
this.age=age;
}
推荐阅读
- sql - SAS 联合来自具有相似名称的数据集的不同记录
- python - 未能在 python 中为给定的正整数 n 按预期打印模式
- python - 在 GitLab 中创建 CI/CD 管道以创建可执行文件
- jira-rest-api - 在 java 中使用 REST API 解决 JIRA ISSUE
- mongodb - 每个数据库操作需要 30 秒
- javascript - 如何预填充函数参数?
- flutter - 为什么我的应用程序(使用 ChangeNotifierProvider 开发)更新时会延迟一级?
- shopify - 如何在 Shopify 发送的电话中编辑收件人号码通知?
- php - 合并单元格的 Phpspreadsheet ods 问题
- javascript - Vue JS - 在模板之前渲染 getter