Java 4강

말하는 감자·2023년 3월 9일
post-thumbnail

2023-03-09


switch


else if 문의 문제점

  • 메뉴가 늘어날수록 흐름이 길어진다.
  • 메뉴가 늘어날수록 실행이 느려진다.

분기문을 이용한 선택흐름

switch문을 이용한 선택흐름

switch(menu){
	case1:
			break;
	case2:
			break;
	case3:
			break;
}
  • 점프문
  • 다음을 실행하지 않기위해서 끊어주는 제어문 ( break )

중첩된 제어구조 벗어나기

Continue/break


public class Program {
	public static void main(String[] args) {
		int n = 0;
		
	
		Scanner scan = new Scanner(System.in);
		System.out.println("값을 sp로 구분해서 5개 이상 입력하세요:");
		
		// 3 Enter, 34 5 6 234 345 54 45 Enter
		while(scan.hasNext()) {
			n = scan.nextInt();
			
			if (n < 10) 
				continue;
			if (n > 200)
				break;
			
			System.out.println(n);
		}
	}
}
// 34

배열


저장소 구현

  • int[] kors = new int[3];
    • 3개짜리 배열 완성

  • 예제 코드
package ex14.array;

import java.util.Scanner;

public class Program {
	public static void main(String[] args) {
		int kor1, kor2, kor3;
		int[] kors = new int[3];
		int total;
		float avg;
		int menu;
		
		Scanner scan = new Scanner(System.in);
		
		// default
		kor1 = 0;
		kor2 = 0;
		kor3 = 0;
		
		for (int i = 0;i<3;i++) {
			kors[i] = 0;
		}

		 종료:
		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.println("\t>");
			menu = scan.nextInt();
			
			switch(menu){
			
			case 1:
				// ------------성적 입력
				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]);
					}
				break;
				
			case 2:
				// ------------성적 출력
				
				// total = kor1 + kor2 + kor3;
				total = kors[0] + kors[1] + kors[2];
				avg = total / 3.0f;
				
				System.out.println("┌───────────────────┐");
				System.out.println("│       성적출력               │");
				System.out.println("└───────────────────┘");
				for(int i=0;i<3;i++) {
					System.out.printf("국어%d : %d\n", i+1, kors[i]);
				}
				System.out.printf("총점 : %3d\n", total);
				System.out.printf("평균 : %6.2f\n", avg);
				break;
				
			case 3:
				break 종료;
			default:
				System.out.println("1~3까지만 입력할 수 있습니다.");
			}
		}
		System.out.println("goodbye~");
	}
}

다차원 배열


  • int[][] kors = new kors[3][3];
  • 예제코드
package ex15.arrays.copy;

import java.util.Scanner;

public class Program {
	public static void main(String[] args) {
		int kor1, kor2, kor3;
		int[][] kors = new int[3][3];
		int[] total = new int[3];
		float[] avg = new float[3];
		int menu;
		
		Scanner scan = new Scanner(System.in);
		
		// default
		kor1 = 0;
		kor2 = 0;
		kor3 = 0;
		
		for (int i = 0;i<3;i++) {
			for(int j=0;j<3;j++) {
				kors[i][j] = 0;
			}
		}

		 종료:
		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.println("\t>");
			menu = scan.nextInt();
			
			switch(menu){
			
			case 1:
				// ------------성적 입력
				System.out.println("┌───────────────────┐");
				System.out.println("│       성적입력               │");
				System.out.println("└───────────────────┘");
				for (int i=0;i<3;i++) {
					System.out.printf("%d학년 성적입력\n", i+1);
					for(int j=0;j<3;j++) {
						do {
							System.out.printf("국어%d:", j+1);
							kors[i][j] = scan.nextInt();
							if(kors[i][j] < 0 || 100 < kors[i][j]) {
								System.out.println("성적범위(0~100)를 벗어났습니다.");
							}
						}while(kors[i][j] < 0 || 100 < kors[i][j]);
					}
				}
				break;
				
			case 2:
				// ------------성적 출력
				
				// total = kor1 + kor2 + kor3;
				for(int i=0;i<3;i++) {
					for (int j=0;j<3;j++) {
						total[i] = kors[i][j] + kors[i][j] + kors[i][j];
						avg[i] = total[i] / 3.0f;
					}
				}
				
				
				System.out.println("┌───────────────────┐");
				System.out.println("│       성적출력               │");
				System.out.println("└───────────────────┘");
				for(int i=0;i<3;i++) {
					System.out.printf("<%d학년 국어성적>-------\n", i+1);
					for (int j=0;j<3;j++) {
						System.out.printf("국어%d : %d\n", j+1, kors[i][j]);
					}
					System.out.printf("총점 : %3d\n", total[i]);
					System.out.printf("평균 : %6.2f\n", avg[i]);
					
				}
				break;
				
			case 3:
				break 종료;
			default:
				System.out.println("1~3까지만 입력할 수 있습니다.");
			}
		}
		System.out.println("goodbye~");
	}
}

상수형 변수


변수와 상수변수

  • 상수형 변수가 필요한 경우?
    • 나중에 봐도 쉽게 알아보기 위해서
    • 코드의 가독서을 높이기 위해서

  • 상수형 변수 예제
package ex16.final_;

import java.util.Scanner;

public class Program {
	public static void main(String[] args) {
		int kor1, kor2, kor3;
		int[][] kors = new int[3][3];
		int[] total = new int[3];
		float[] avg = new float[3];
		int menu; // 1: input, 2: print, 3: exit;
		final int MENU_INPUT = 1;
		final int MENU_PRINT = 2;
		final int EXIT = 3;
		
		Scanner scan = new Scanner(System.in);
		
		// default
		kor1 = 0;
		kor2 = 0;
		kor3 = 0;
		
		for (int i = 0;i<3;i++) {
			for(int j=0;j<3;j++) {
				kors[i][j] = 0;
			}
		}

		 종료:
		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.println("\t>");
			menu = scan.nextInt();
			
			switch(menu){
			
			case MENU_INPUT:
				// ------------성적 입력
				System.out.println("┌───────────────────┐");
				System.out.println("│       성적입력               │");
				System.out.println("└───────────────────┘");
				for (int i=0;i<3;i++) {
					System.out.printf("%d학년 성적입력\n", i+1);
					for(int j=0;j<3;j++) {
						do {
							System.out.printf("국어%d:", j+1);
							kors[i][j] = scan.nextInt();
							if(kors[i][j] < 0 || 100 < kors[i][j]) {
								System.out.println("성적범위(0~100)를 벗어났습니다.");
							}
						}while(kors[i][j] < 0 || 100 < kors[i][j]);
					}
				}
				break;
				
			case MENU_PRINT:
				// ------------성적 출력
				
				// total = kor1 + kor2 + kor3;
				for(int i=0;i<3;i++) {
					for (int j=0;j<3;j++) {
						total[i] = kors[i][j] + kors[i][j] + kors[i][j];
						avg[i] = total[i] / 3.0f;
					}
				}
				
				
				System.out.println("┌───────────────────┐");
				System.out.println("│       성적출력               │");
				System.out.println("└───────────────────┘");
				for(int i=0;i<3;i++) {
					System.out.printf("<%d학년 국어성적>-------\n", i+1);
					for (int j=0;j<3;j++) {
						System.out.printf("국어%d : %d\n", j+1, kors[i][j]);
					}
					System.out.printf("총점 : %3d\n", total[i]);
					System.out.printf("평균 : %6.2f\n", avg[i]);
					
				}
				break;
				
			case EXIT:
				break 종료;
			default:
				System.out.println("1~3까지만 입력할 수 있습니다.");
			}
		}
		System.out.println("goodbye~");
	}
}

0개의 댓글