비트캠프/실습

231201 JAVA switch case 기능단위로 묶기

보더96 2023. 12. 1. 14:13
public static void main(String[] args) {

    printMenu();

    java.util.Scanner keyIn = new java.util.Scanner(System.in);

    loop:
    while (true) {
      String input = prompt("메인", keyIn);

      switch (input) {
        case "1":
          System.out.println("[과제]");
          System.out.println("1. 등록");
          System.out.println("2. 조회");
          System.out.println("3. 변경");
          System.out.println("4. 삭제");
          System.out.println("0. 이전");

          loop2:
          while (true) {
            input = prompt("메인/과제", keyIn);

            switch (input) {
              case "1":
                System.out.println("등록입니다.");
                break;
              case "2":
                System.out.println("조회입니다.");
                break;
              case "3":
                System.out.println("변경입니다.");
                break;
              case "4":
                System.out.println("삭제입니다.");
                break;
              case "0":
                break loop2;
              case "menu":
                System.out.println("[과제]");
                System.out.println("1. 등록");
                System.out.println("2. 조회");
                System.out.println("3. 변경");
                System.out.println("4. 삭제");
                System.out.println("0. 이전");
                break;
              default:
                System.out.println("메뉴 번호가 옳지 않습니다!");
            }
          }
          break;
        case "2":
          System.out.println("게시글입니다.");
          break;
        case "3":
          System.out.println("도움말입니다.");
          break;
        case "4":
          System.out.println("종료합니다.");
          break loop;
        case "menu":
          // 코드를 기능 단위로 묶어 메서드로 정의하면
          // 메서드의 이름을 통해 해당 기능을 쉽게 유추할 수 있어 유지보수에 좋다.
          printMenu();
          break;
        default:
          System.out.println("메뉴 번호가 옳지 않습니다.");
      }
    }

    keyIn.close();
  }

 

 

switch case 문 안에 또다른 switch case문을 넣으면 가독성이 없기 때문에

 

클래스 변수 onAssignmetn 를 밖에다가 선언해주고 

switch (input) {
  case "1":
    //System.out.println("과제입니다.");
    onAssignment(scanner);
    break;

 

static void onAssignment(Scanner scanner) {
  System.out.println();
  System.out.println(ANSI_BOLD_RED + "[과제]" + ANSI_CLEAR);

  for (String menu : menu1) {
    System.out.println(menu);
  }

  loop2:
  while (true) {

    //System.out.print("메인/과제", scanner);
    //Scanner scanner = new Scanner(System.in);
    String input = prompt("메인/과제", scanner);

    switch (input) {
      case "1":
        System.out.println("과제 등록입니다.");
        break;
      case "2":
        System.out.println("과제 조회입니다.");
        break;
      case "3":
        System.out.println("과제 변경입니다.");
        break;
      case "4":
        System.out.println("과제 삭제입니다.");
        break;
      case "0":
        System.out.println("메인으로 돌아갑니다");
        printMenu();
        return;
      default:
        System.out.println("올바른 번호를 입력하세요11231.");
    }
  }
}

 

를 해주면

이렇게 출력이 된다!