Java - Bottom Up 방식-2
이제 모든것을 분리해볼것이다.
import java.util.Scanner;
public class StructuredStudy {
static int[] kors = new int[3];
public static void main(String[] args) {
int menu;
boolean keepLoop = true;
while(keepLoop)
{
menu =메뉴입력();
switch(menu)
{
case 1:
성적입력();
break;
case 2:
성적출력();
break;
case 3:
System.out.println("Bye~~");
keepLoop = false;
break;
default:
System.out.println("잘못된 값을 입력하셨습니다. 메뉴는 1~3까지입니다.");
}
}
}//main 함수
static int 메뉴입력() {
Scanner scan = new Scanner(System.in);
System.out.println("┌──────────────────┐");
System.out.println("│ 메인 메뉴 │");
System.out.println("└──────────────────┘");
System.out.println("\t1. 성적입력 ");
System.out.println("\t2. 성적출력 ");
System.out.println("\t3. 종료 ");
System.out.println("\t선택> ");
int menu = scan.nextInt();
return menu;
}
static void 성적출력() {
int total = 0;
float avg;
for(int i = 0; i < 3; i++)
{
total += kors[i];
}
avg = total / 3.0f;
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 출력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++)
{
System.out.printf("국어 %d : %3d\n", 3-i, kors[i]);
}
System.out.printf("총점 : %3d\n", total);
System.out.printf("평균 : %6.2f\n", avg);
System.out.println("────────────────────────");
}
static void 성적입력() {
Scanner scan = new Scanner(System.in);
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 입력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++)
{
do
{
System.out.printf("국어%d : ", i+1);
kors[i] = scan.nextInt();
if(kors[i] < 0 || 100 < kors[i])
{
System.out.println("국어성적은 0~100까지의 범위만 입력이 가능합니다.");
}
}while(kors[i]<0 || 100 < kors[i]);
}
System.out.println("────────────────────────");
}
}
분리를 하다보면 메뉴입력() 부분에서 문제가 생길것이다. menu 변수가 에러가나는데 이때 menu = 메뉴입력() 으로 해준후 static int 메뉴입력() 에 return 값을 넣어 값을 반환해준다. 값을 반환해주면 void(출력) 이 아닌 반환값 int를 사용해야한다
장점
- 큰 틀을 볼수가있다.
- 코드를 나눠서 세부적으로 확인할수있다.
- 재사용이 가능하다.
참고 : https://youtu.be/gp_Qr6FAGEQ 뉴렉썜
댓글남기기