-
[JAVA] 배열의 중요성JAVA 2021. 2. 26. 13:59
안녕하세요! 저번 시간에는 JAVA의 제어구조에 대해 정리했습니다.
이번에는 제어구조를 다 알고 있다는 가정하에!
( 뉴렉처님
www.youtube.com/watch?v=p3xABYu0B0c&list=PLq8wAnVUcTFV7wEVu2qcAChtAOYusZwzj&index=26 강의를 참고해주세요)
이 코드를 어떻게 하면 더 깔끔하게 정리할 수 있을까?
라는 질문에 대한 답을 찾으려고합니다!
그것은 바로, 바로, 바로, 바로, 배열이라는 개념입니다!
일단 개념에 대해 설명 드갑니다!
wikidocs.net/206 자세한 설명은 링크 타시면 나와있습니다!
일단 저번 시간까지 배운 자바 제어구조를 살펴봅시다람쥐
코드 나와~~
package ex12.control2.switch_; import java.util.Scanner; public class Program { public static void main(String[] args) { int kor1, kor2, kor3; int total; float avg; int menu; Scanner scan = new Scanner(System.in); kor1 = 0; kor2 = 0; kor3 = 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("───────────────────────────"); do { System.out.println("국어1:"); kor1 = scan.nextInt(); if (kor1 < 0 || 100 < kor1) System.out.println("성적범위(0~100)을 초과했습니다."); } while (kor1 < 0 || 100 < kor1); do { System.out.println("국어2:"); kor2 = scan.nextInt(); if (kor2 < 0 || 100 < kor2) System.out.println("성적범위(0~100)을 초과했습니다."); } while (kor2 < 0 || 100 < kor2); do { System.out.println("국어3:"); kor3 = scan.nextInt(); if (kor3 < 0 || 100 < kor3) System.out.println("성적범위(0~100)을 초과했습니다."); } while (kor3 < 0 || 100 < kor3); case 2: // -----성적 출력 부분------------------- total = kor1 + kor2 + kor3; avg = total / 3.0f; System.out.println("────────────────────────── "); System.out.println("성적 출력"); System.out.println("───────────────────────────"); System.out.printf("\t국어1: %3d\n", kor1); System.out.printf("\t국어2: %3d\n", kor2); System.out.printf("\t국어3: %3d\n", kor3); System.out.printf("\t총점: %3d\n", total); System.out.printf("\t평균: %6.2f\n", avg); System.out.printf("------------------------\n"); break; case 3: break 종료; default: System.out.println("---입력오류 1~3까지만 입력가능합니다. "); } } System.out.println("good bye~"); } }
위 코드를 보고 이해하지 못하는 분은 그냥 넘어오지 마시고 꼭 강의를 듣고 오시는것을 추천드립니다!
뉴렉처 JAVA강의 ~33강까지입니다.
위의 코드는 실행은 잘 되긴하지만 치명적인 단점이 존재합니다!
너무 길잖아ㅜㅜ 가독성이 떨어지자나~~
그래서 오늘의 해결책 배열을 이용합니다!
어느 부분을 배열을 이용할지 감이 오시나요?? 다 알고 있는거 압니다! 허허허허
자 그럼 배열을 이용한 코드 들어갑니다! 한번 비교해 봅시다
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); /* * 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]); 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("\t국어%d : %3d\n", i+1, kors[i]); System.out.printf("\t총점: %3d\n", total); System.out.printf("\t평균: %6.2f\n", avg); System.out.printf("------------------------\n"); break; case 3: break 종료; default: System.out.println("---입력오류 1~3까지만 입력가능합니다. "); } } System.out.println("good bye~"); } }
위 2가지의 코드를 비교해봅시다
1. 배열선언할때 3줄 -> 1줄로 줄였습니다.
2. case 1: 부분의 do while 부분을 한번만 이용하여
kor1, kor2 , kor3 의 성적입력 로직을 효율적으로 바꾸게 되었습니다.
위의 코드의 경우 성적 입력부분이 3가지 밖에 안되었지만, 만일 이것이 1000000000000개라면 얘기가 달라지겠죠!
오늘의 띵언을 마무리로 글을 마칩니다.
기계를 잘 굴릴줄 아는 사람이 되어야 겠습니다
이 글은 유투브 뉴렉처님의 강의를 바탕으로 제작된 것입니다.
내용 설명및 자세한 내용에 대해서는 강의를 직접 듣는 것이 더 효율적으로 보입니다.
'JAVA' 카테고리의 다른 글
[JAVA]구조적 프로그래밍(4) (0) 2021.03.03 [JAVA]구조적 프로그래밍(3) (0) 2021.03.03 [JAVA]구조적 프로그래밍(2) (0) 2021.03.02 [JAVA]구조적 프로그래밍(1) (0) 2021.03.02 [JAVA] 제어 구조 if 와 while (0) 2021.02.25