while (true) {
//----------------메인 메뉴 부분 -------------------------------
System.out.println("┌──────────────────────────────────────┐");
System.out.println("│ 메인메뉴 │");
System.out.println("└──────────────────────────────────────┘");
System.out.println("\t1. 성적 입력");
System.out.println("\t2. 성적 출력");
System.out.println("\t3. 종료");
System.out.print("\t선택 >");
menu = scan.nextInt(); //메뉴 값을 받기
if (menu == 1) { // 받은 메뉴 값이 1이라면 아래 코드 실행
//-----------------성적 입력 부분------------------------
System.out.println("┌──────────────────────────────────────┐");
System.out.println("│ 성적입력 │");
System.out.println("└──────────────────────────────────────┘");
do {
System.out.print("국어 1: ");
kor1 = scan.nextInt();
if (kor1 < 0 || 100 < kor1)
System.out.println("성적범위(0~100)를 벗어났습니다.");
} while (kor1 < 0 || 100 < kor1);
do {
System.out.print("국어 2: ");
kor2 = scan.nextInt();
if (kor2 < 0 || 100 < kor2)
System.out.println("성적범위(0~100)를 벗어났습니다.");
} while (kor2 < 0 || 100 < kor2);
do {
System.out.print("국어 3: ");
kor3 = scan.nextInt();
if (kor3 < 0 || 100 < kor3)
System.out.println("성적범위(0~100)를 벗어났습니다.");
} while (kor3 < 0 || 100 < kor3);
}
else if (menu == 2) { //받은 메뉴 값이 2라면 아래 코드 실행
//-----------------성적 출력 부분------------------------
total = kor1 + kor2 + kor3;
avg = total / 3.0f;
System.out.println("┌──────────────────────────────────────┐");
System.out.println("│ 성적출력 │");
System.out.println("└──────────────────────────────────────┘");
//for(int n=1; n<=3; i++)
for (int i = 0; i < 3; i++)
System.out.printf("\t국어%d : %3d\n", i + 1, kor1);
System.out.printf("\t총점 : %3d\n", total);
System.out.printf("\t평균 : %6.2f\n", avg);
System.out.println("──────────────────────────────────────");
}
else if (menu == 3) { // 받은 메뉴 값이 3이라면 아래 코드 실행
break; // 현재 진행되는 반복문을 벗어나겠다.
}else
System.out.println("입력오류 1~3까지만 입력할 수 있습니다.");
}
System.out.println("good bye!");
}
유념해야할 것
동작이 잘 이루어진다 하여서 잘 만든 것은 아니다. 코드의 흐름을 잘 파악하자
(x)
else를 쓰지않고 if만 써서 진행했을 경우 각 성적 입력,출력 부분은 독립적으로 검사한다.
(o)
else를 쓸경우 앞 if와 이어져서 1번째 if가 성립 된다면 2번째 3번째 조건은 그냥 넘어가게 된다.