*Bottom Up
절차를 잘라서 구조적으로 만듬
*Top down
코드없이 구조부터 만들어서 진행
*전역변수를 만들때는 static을 붙인다
-> Bottom Up 방식으로 아래 코드 구조화 진행연습
package test;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
int size = 3;
int[] kors = new int[size];
int total;
float avg;
int menu = 0; // 1.INPUT 2.PRINT 3.EXIT
final int MENU_INPUT = 1; // 상수
final int MENU_PRINT = 2; // 상수
final int MENU_EXIT = 3; // 상수
boolean loop = true;
Scanner scan = new Scanner(System.in);
for(int i=0; i<size; i++) { // 점수 초기화
kors[i] = 0;
}
while(loop){
System.out.println("\t1.성적입력");
System.out.println("\t2.성적출력");
System.out.println("\t3.종료");
System.out.print("\t>>>");
menu = scan.nextInt();
switch(menu) {
case MENU_INPUT://1
//성적입력--------------------------------------
System.out.println("------------------------------------");
System.out.println("@@@@@@@@@@@@@성적입력@@@@@@@@@@@@@@@@");
for(int i=0; i<size; i++){
do{
System.out.printf("국어%d : ",i+1);
kors[i]=scan.nextInt();//점수입력
if(kors[i]<0||100<kors[i]) {
System.out.println("성적범위를 벗어났습니다.");
}
}while(kors[i]<0||100<kors[i]); // 점수 범위를 벗어날 경우 false, 위의 내용 다시 반복
}
case MENU_PRINT://2
//성적출력--------------------------------------
total = kors[0] + kors[1] + kors[2];
avg = total / 3.0f;
System.out.println("------------------------------------");
System.out.println("@@@@@@@@@@@@@성적출력@@@@@@@@@@@@@@@@");
for(int i=0; i<size; i++) {
System.out.printf("\t국어%d: %3d\n", i+1, kors[i]);// \t 탭, %3d 3칸 정렬, \n 한칸내리기
}
System.out.printf("\t총점: %3d\n", total); // 3칸 정렬
System.out.printf("\t평균: %6.2f\n", avg); // 소수점 2자리 까지 나오고 6칸 정렬
System.out.println("------------------------------------");
break;
case MENU_EXIT://3
//EXIT
break;
default:
System.out.println("입력오류 : 1에서 3까지만 입력 할 수 있습니다.");
}
System.out.println("good bye~");
break;
}
}
}
완전 똑같이는 하지 않음
*출력예시
1.성적입력
2.성적출력
3.종료
>>>1
------------------------------------
@@@@@@@@@@@@@성적입력@@@@@@@@@@@@@@@@
국어1 : 2
국어2 : 2
국어3 : 2
------------------------------------
@@@@@@@@@@@@@성적출력@@@@@@@@@@@@@@@@
국어1: 2
국어2: 2
국어3: 2
총점: 6
평균: 2.00
------------------------------------
good bye~
package test;
import java.util.Scanner;
public class Program {
static int size = 3;
static int[] kors = new int[size];
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
int menu = 0; // 1.INPUT 2.PRINT 3.EXIT
final int MENU_INPUT = 1; // 상수
final int MENU_PRINT = 2; // 상수
final int MENU_EXIT = 3; // 상수
boolean loop = true;
//메뉴
while(loop){
System.out.println("\t1.성적입력");
System.out.println("\t2.성적출력");
System.out.println("\t3.종료");
System.out.print("\t>>>");
menu = scan.nextInt();
switch(menu) {
case MENU_INPUT://1
gradeEnter();
case MENU_PRINT://2
gradeOutput();
case MENU_EXIT://3
//EXIT
break;
default:
System.out.println("입력오류 : 1에서 3까지만 입력 할 수 있습니다.");
}
System.out.println("good bye~");
break;
}
}
//성적입력--------------------------------------
static void gradeEnter() {
// 점수 초기화
for(int i=0; i<size; i++) {
kors[i] = 0;
}
System.out.println("------------------------------------");
System.out.println("@@@@@@@@@@@@@성적입력@@@@@@@@@@@@@@@@");
for(int i=0; i<size; i++){
do{
System.out.printf("국어%d : ",i+1);
kors[i]=scan.nextInt();//점수입력
if(kors[i]<0||100<kors[i]) {
System.out.println("성적범위를 벗어났습니다.");
}
}while(kors[i]<0||100<kors[i]); // 점수 범위를 벗어날 경우 false, 위의 내용 다시 반복
}
}
//성적출력--------------------------------------
static void gradeOutput() {
int total;
float avg;
total = kors[0] + kors[1] + kors[2];
avg = total / 3.0f;
System.out.println("------------------------------------");
System.out.println("@@@@@@@@@@@@@성적출력@@@@@@@@@@@@@@@@");
for(int i=0; i<size; i++) {
System.out.printf("\t국어%d: %3d\n", i+1, kors[i]);// \t 탭, %3d 3칸 정렬, \n 한칸내리기
}
System.out.printf("\t총점: %3d\n", total); // 3칸 정렬
System.out.printf("\t평균: %6.2f\n", avg); // 소수점 2자리 까지 나오고 6칸 정렬
System.out.println("------------------------------------");
}
}
'Java 코드연습' 카테고리의 다른 글
[뉴렉처] 함수의 매개변수 (0) | 2021.10.18 |
---|---|
[뉴렉처] Top Down 방식으로 구현하는 간단 예제 (0) | 2021.10.18 |
[뉴렉처] 매개변수를 이용한 함수 고립화 (0) | 2021.10.18 |
[뉴렉처] 오목판 출력하기 (0) | 2021.10.17 |
[뉴렉처] 반복문 연습 (0) | 2021.10.16 |