首页 > 解决方案 > 如果可以的话,我可以尝试在设置器中捕获异常吗?我该如何正确地做到这一点?

问题描述

我想要发生的是让用户输入年龄并让程序使用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;
}

}

标签: javaintellij-ideamethodsgettersetter

解决方案


使用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;
}

推荐阅读