프로젝트 & 포트폴리오/학생관리 + 묵찌빠 프로젝트

학생 정보 관리 프로젝트 오류 수정(SubjectsListController.java)

인정이애옹 2024. 6. 4. 11:27
System.out.println("\n과목정보 작업을 고르세요");
int no = Integer.parseInt(promptWithValidation("추가(1) 수정(2) 삭제(3) 상위메뉴(4) : ", s -> !s.isBlank()));
ControllerLocator studentlocator = StudentControllerLocator.getInstance();
Controller controller = null;
switch (no) {
    case 1:
        controller = studentlocator.find(StudentMenu.SUBINSERT);
        break;
    case 2:
        controller = studentlocator.find(StudentMenu.SUBUPDATE);
        break;
    case 3:
        controller = studentlocator.find(StudentMenu.SUBDELETE);
        break;
}

-> java.lang.NullPointerException: Cannot invoke "org.choongang.global.Controller.run()" because "controller" is null at org.choongang.student.controllers.SubjectsListController.prompt(SubjectsListController.java:48) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.StudentController.change(StudentController.java:48) at org.choongang.student.controllers.StudentController.prompt(StudentController.java:26) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.student.controllers.SubjectsDeleteController.prompt(SubjectsDeleteController.java:32) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.SubjectsListController.prompt(SubjectsListController.java:48) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.StudentController.change(StudentController.java:48) at org.choongang.student.controllers.StudentController.prompt(StudentController.java:26) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.student.controllers.SubjectsUpdateController.prompt(SubjectsUpdateController.java:43) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.SubjectsListController.prompt(SubjectsListController.java:48) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.StudentController.change(StudentController.java:48) at org.choongang.student.controllers.StudentController.prompt(StudentController.java:26) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.student.controllers.SubjectsInsertController.prompt(SubjectsInsertController.java:38) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.SubjectsListController.prompt(SubjectsListController.java:48) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.student.controllers.StudentController.change(StudentController.java:48) at org.choongang.student.controllers.StudentController.prompt(StudentController.java:26) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.global.AbstractController.change(AbstractController.java:107) at org.choongang.global.AbstractController.prompt(AbstractController.java:42) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.member.controllers.LoginController.prompt(LoginController.java:41) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.global.AbstractController.change(AbstractController.java:107) at org.choongang.global.AbstractController.prompt(AbstractController.java:42) at org.choongang.global.AbstractController.run(AbstractController.java:75) at org.choongang.main.MainRouter.change(MainRouter.java:43) at org.choongang.main.MainRouter.start(MainRouter.java:49) at org.choongang.Application.main(Application.java:7) 메뉴 1,2,3,4 중에서 선택하세요.

이렇게 오류난다.

 

System.out.println("\n과목정보 작업을 고르세요");
int no = Integer.parseInt(promptWithValidation("추가(1) 수정(2) 삭제(3) 상위메뉴(4) : ", s -> !s.isBlank()));
ControllerLocator studentlocator = StudentControllerLocator.getInstance();
Controller controller = null;
switch (no) {
    case 1:
        controller = studentlocator.find(StudentMenu.SUBINSERT);
        break;
    case 2:
        controller = studentlocator.find(StudentMenu.SUBUPDATE);
        break;
    case 3:
        controller = studentlocator.find(StudentMenu.SUBDELETE);
        break;
    default:
        controller = studentlocator.find(MainMenu.STUDENT);
}

 

 

상위 메뉴 가려고 4를 누르면 오류 발생

 

NullPointerException 오류는 controller 변수가 null이기 때문에 발생합니다. 이는 사용자의 입력이 switch 문에서 어떤 case와도 일치하지 않아 null인 controller에 대해 run() 메서드를 호출하려 하기 때문입니다.

 

System.out.println("\n과목정보 작업을 고르세요");
int no = Integer.parseInt(promptWithValidation("추가(1) 수정(2) 삭제(3) 상위메뉴(4) : ", s -> !s.isBlank()));
ControllerLocator studentlocator = StudentControllerLocator.getInstance();
Controller controller = null;
switch (no) {
    case 1:
        controller = studentlocator.find(StudentMenu.SUBINSERT);
        break;
    case 2:
        controller = studentlocator.find(StudentMenu.SUBUPDATE);
        break;
    case 3:
        controller = studentlocator.find(StudentMenu.SUBDELETE);
        break;
    default:
        controller = studentlocator.find(MainMenu.STUDENT);
}

dfault문 추가해서 오류 수정!