[혼공자] 2주차 미션

안민선·2024년 1월 13일
0

혼공시리즈

목록 보기
2/7

2주차 미션은 swich문 손코딩하기!

  • swich-case문은 원하는 조건을 선택하여 반복하는 반복문이다.

  • 위 예제는 1~6까지의 숫자를 랜덤으로 나오는 주사위를 돌렸을 때 어떤 숫자가 나왔는지 알려주는 문제이다.

  • case에서 1~6 중의 숫자의 조건을 출력한다.
    ex) num에서 2가 나왔으면 case 2의 출력문이 나온다.
    (음료주 자판기에서 원하는 음료 버튼을 눌러 뽑는 느낌이랑 비슷하다.)


    선택 미션
    (p.202 05-2 확인 문제 6번 풀고 정리하기)
    .
    .

풀이 코드

package sec02.exam11;

import java.util.Scanner;

public class Exercise06 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		boolean run = true;
		int studentNum = 0;
		int[] scores = null;
		
		while(run) {
			System.out.println("--------------------------------------------------");
			System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
			System.out.println("--------------------------------------------------");
			System.out.print("선택> ");
			
			int selectNo = Integer.parseInt(sc.nextLine());
			
			if(selectNo == 1) {
				System.out.print("학생수> ");
				studentNum = Integer.parseInt(sc.nextLine());
				
				scores = new int[studentNum];
			}
			else if(selectNo == 2) {
				for(int i=0; i<scores.length; i++) {
					System.out.print("scores[" + i + "]> ");
					scores[i] = Integer.parseInt(sc.nextLine());
				}
			}
			else if(selectNo == 3) {
				for(int i=0; i<scores.length; i++) {
					System.out.println("scores[" + i + "]> " + scores[i]);
				}
			}
			else if(selectNo == 4) {
				System.out.print("최고 점수: ");
				int max = 0;
				for(int i=0; i<scores.length; i++) {
					if(scores[i]>max) {
						max = scores[i];
					}	
				}	
				System.out.println(max);
				double avg = 0;
				int sum = 0;
				System.out.print("평균 점수: ");
				for(int i=0; i<scores.length; i++) {
					sum += scores[i];
				}
				avg = (double)sum/studentNum;
				System.out.println(avg);
			}
			else if(selectNo == 5) {
				run = false;
			}
		}
		System.err.println("프로그램 종료");

	}

}

.
.
결과

  • while문으로 계속 반복한다.
  • 그 안에서 if문(조건문)을 이용하여 각 숫자마다 조건을 수행한다.
  • selectNo는 위 바에 있는 숫자를 입력 받는 변수이다.(학생수, 점수입력 등)
    1. 학생수를 입력받는다.
      scores배열에 학생 수 만큼 점수를 입력받아야 하므로 studentNum만큼 입력받는 배열을 생성한다.
    1. 점수를 입력한다.
      for문을 이용하여 인덱스 0부터 scores배열의 크기만큼 반복하며 배열방에 점수를 입력받는다.
    1. 점수 리스트를 출력한다.
      2에서 출력한 내용을 for문으로 그대로 출력한다.
      인덱스 0부터 scores.length까지 반복한다.
    1. 최고 점수와 평균을 분석한다.
      최고점수는 for문으로 반복하며 if문으로 최고 값을 구한다.
      if문 조건식 안에는 scores[i]가 max보다 클 경우 max에 scores[i]를 넣는다.
      반복하여 max값을 구한다.
      평균 점수는 for문으로 전체 점수합(sum)을 학생수(studentNum)으로 나눈다.(이때 소수점까지 구해야하므로 double로 나누어야한다.)
    1. 종료한다.
      boolean타입인 run이 true일 때만 while문이 반복하니까 false로 바꾸면 while문이 종료된다.

배열이 좀 어렵기는 했지만 변수를 많이 사용해야할 경우 배열 하나로 깔끔한 코드를 짤 수 있어서 좋았다. 위 선택 문제도 앞에서 배운 반복문(for, while)과 조건문(if)을 사용하면서 배열도 같이 사용하여 문제를 풀어볼 수 있어서 신기하고 재미있었다.

0개의 댓글