1 분 소요

1. p.142 switch문실행 후 결과 화면 캡쳐(기본미션)

**<코드>**

public class Main {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;

        switch (num) {
            case 1:
                System.out.println("1번이 나왔습니다.");
                break;
            case 2:
                System.out.println("2번이 나왔습니다.");
                break;
            case 3:
                System.out.println("3번이 나왔습니다.");
                break;
            case 4:
                System.out.println("4번이 나왔습니다.");
                break;
            case 5:
                System.out.println("5번이 나왔습니다.");
                break;
            default:
                System.out.println("6번이 나왔습니다.");
                break;
        }
    }
}

**<결과>**

스크린샷 2024-01-11 오후 5 39 14

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

**<코드>**

  • scanner.nextInt()을 쓰지 않는 이유

    • nextInt() 메서드는 개행문자(Enter)를 읽지 않기 때문에, 학생수를 입력받은 후 Enter가 버퍼에 남아있게 된다.

      이로 인해 다음 ‘scanner.nextLine()’을 호출할 때, 버퍼에 남아있는 Enter가 그대로 입력으로 들어가 이로 인해 빈 문자열(““)이 되어 Integer.parseInt()에서 NumberFormatException 발생한다.

      ➡ 학생 수 입력 받은 후 ‘scanner.nextLine()’을 호출해 Enter를 소비해주어야 한다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        boolean run = true;
        int studentNum = 0;
        int[] scores = null;
        Scanner scanner = new Scanner(System.in);

        while(run){
            System.out.println("----------------------------------------------");
            System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
            System.out.println("----------------------------------------------");
            System.out.print("선택> ");

            int selecNo = Integer.parseInt(scanner.nextLine());

            if (selecNo == 1){ // 학생수 입력
                // 코드 작성
                System.out.print("학생수> " );
                studentNum = Integer.parseInt(scanner.nextLine());//학생 수 입력 받기
            }
            else if(selecNo == 2){// 점수입력
                // 코드 작성
                scores = new int[studentNum];//score 배열에 학생 수 만큼 크기 지정
                for(int i = 0; i < scores.length; i++){// 배열 길이만큼 for문 돌기
                    System.out.print("scores["+ i + "]> ");
                    scores[i] = Integer.parseInt(scanner.nextLine());// 점수 입력
                }
            }
            else if(selecNo == 3) {// 점수리스트 출력
                // 코드 작성
                for (int i = 0; i < scores.length; i++) {// socre 배열 길이만큼  for문 돌기
                    System.out.println("scores[" + i + "]> " + scores[i]);// 점수 리스트 출력
                }
            }
            else if(selecNo == 4){ // 최댓값, 평균값 출력
                // 코드 작성
                int max = -1000000;// 임시 최댓값 지정
                int sum = 0;
                double avg = 0.0;

                for(int i =0; i < scores.length; i++){ // score 배열 길이만큼 for문 돌기
                    if (scores[i] > max){ // scores[i]가 max보다 크면
                        max = scores[i];// 최댓값 지정
                    }
                    sum += scores[i];// 점수 합 
                }
                avg = (double)sum / (double)scores.length;// 점수 합에 배열 길이만큼 나누기 
              	// 최댓값, 평균값 출력
                System.out.println("최고 점수: " + max);
                System.out.println("평균 점수: " + avg);
            }
            else if(selecNo == 5){
                run = false;
            }
        }
        System.out.print("프로그램 종료" );
    }
}

**<결과> **

image

댓글남기기