package mystudy.myapp;
import java.util.Scanner;
public class App {
static final String ANSI_CLEAR = "\033[0m"; // 초기화
static final String ANSI_BOLD_RED = "\033[1;31m"; // 볼드체 + 빨간색글씨
static final String ANSI_RED = "\033[0;31m"; // 빨간색글씨
static final String APP_TITLE = ANSI_BOLD_RED + "[과제관리 시스템]" + ANSI_CLEAR;
static final String[] MENUS = {
"1. 과제",
"2. 게시글",
"3. 도움말",
ANSI_RED + "4. 종료" + ANSI_CLEAR
};
public static void main(String[] args) {
// 메서드 하나로 20줄 넘는 것을 한줄로 처리가능하다!!
printMenu();
Scanner scanner = new Scanner(System.in);
loop:
while (true) {
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 loop;
case "menu":
// 코드를 기능 단위로 묶어 메서드로 정의하면
// 메서드의 이름을 통해 해당 기능을 쉽게 유추할수 있어 유지보수에 좋다.
printMenu();
break;
default:
System.out.println("올바른번호를 입력하십시오.");
}
}
scanner.close();
}
static void printMenu() {
// ANSI 코드와 App 제목, 메뉴를 저장한 변수를 메서드 안에 두는 대신에
// 클래스 블록안에 두면
// printMenu()를 호출할때마다 변수를 만들기 않기 때문에 실행 속도나 메모리 부분에서
// 훨씬 효율적이다.
// 보통 메서드 호출 될때 마다 값이 바뀌는 변수가 아니라 고정 값을 같는 변수인 경우
// 메서드 밖에 두는 것이 좋다.
//
System.out.println(ANSI_BOLD_RED + APP_TITLE + ANSI_CLEAR);
System.out.println();
for (String menu : MENUS) {
System.out.println(menu);
}
}
static String prompt(Scanner scanner) {
System.out.print("> ");
return scanner.nextLine();
}
}
static final => static 변수로 뒤에 final이 붙이면 변수에서 상수로 바뀌어 값을 변경할수 없다.
printMenu(); => 변하지 않는 값을 메서드로 만들어 사용한다.
Scanner scanner = new Scanner(System.in);
scanner.nextLine(); / scanner.nextInt()
=> 사용자가 입력한 한 줄의 문자열을 읽어오는 메서드 호출로, Scanner 클래스의 nextLint()메서드이다.
System.in 을 사용해 표준 입력에서 데이터를 읽어온다.
loop: 를 주어 { } 안에 를 지정하고 while문으로 반복문을 만든다.
while문은 무한 반복문이니 break를 지정해주고 종료합니다.라는 "4"가 나오게 되면 loop를 멈추게
break loop; 를 해준다 그러면 loop{ } 를 지정해주었던 반복문이 멈추게 된다.
while 문에서 break; 를 사용하지 않으면 1234 전체가 출력된다 break는 필수!
scanner.close() 는 scanner객체를 닫는 메서드로, 더이상 입력을 받을수 없게 된다.
=> 이 메서드는 문장이 끝나면 닫아주는것을 습관화 해야한다.
static void printMenu() {} => 변하는 값들을 모아둔 것으로 변하지 않은 것들은 static final로 밖으로 빼두었다.
printMenu를 호출할때마다 변수를 만들지 않기 때문에 메모리 부분에서 훨신 효율적이다.
static String prompt() => 사용자에게 프롬프트를 표시하고, 사용자가 입력한 값을 문자열로 반환
사용자가 입력한 값을 문자열로 반환해 간단한 입력 메서드를 만들수 있다.
'비트캠프 > 실습' 카테고리의 다른 글
231205 CRUD 콘솔 출력하기 (2) | 2023.12.05 |
---|---|
231201 JAVA switch case 기능단위로 묶기 (0) | 2023.12.01 |
231130 ex07 - exam001 별찍기 해설풀이 (0) | 2023.11.30 |
Java JDK 버전 바꾸는 방법 (1) | 2023.11.22 |
231122 Gradle 자바프로젝트 생성 eclipse / intelliJ (0) | 2023.11.22 |