학생 정보 관리 프로젝트 오류 수정(SubjectsListController.java)
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);
}
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문 추가해서 오류 수정!