TOP
class="layout-aside-left paging-number">
본문 바로가기
프로그래밍 및 기타/Java, JSP, HTML, CSS

[java] 예제 및 풀이 (Switch, 배열 + 반복문)

by 기록자_Recordian 2025. 4. 2.
728x90
반응형
이전 내용
 

[java] java 예제 및 풀이(scanner, 조건문, do-while)

이전 내용 [java] parse+자료형: 문자열 변환이전 내용 [java] 이클립스 한글 깨짐이전 내용 [java] 이클립스 다크모드, 글꼴 설정이전 내용 [Java] Java 개념, Java를 위한 프로그램 설치Java 란?출처: 위

puppy-foot-it.tistory.com


예제1

 

Q. Switch 문을 사용하여 과일 가격을 알려주는 프로그램 만들기

System.out.println("어떤 과일을 원하세요?");
String fruit = "Banana";

switch (fruit) {
case "Apple":
    System.out.println("5000원 입니다.");
    break;
case "Grape":
    System.out.println("8000원 입니다.");
    break;
case "Banana":
    System.out.println("3000원 입니다.");
    break;
case "Peach":
    System.out.println("6000원 입니다.");
    break;
default:
    System.out.println("0원 입니다.");
}
System.out.println("감사합니다.");

 

[Java] 25년 1월 7일 - 자바 기초(조건문, scanner)

이전 내용 [JAVA] 25년 1월 3일 - 자바 기초이전 내용 [JAVA] 25년 1월 2일 - 자바 기초◆ 새 프로젝트 만들기 New - java project - 프로젝트명: java_ex02 ◆ 클래스 만들기 java_ex02 - src - New - Class - Ex01 * 이클

puppy-foot-it.tistory.com


예제2

 

Q. Switch 문을 사용하여 대소문자 관계 없이 회원 등급을 출력하는 프로그램 만들기

// 대소문자 구분 없는 등급 프로그램
char grade = 'B';

switch (grade) {
case 'a':
case 'A':
    System.out.println("최우수회원 입니다.");
    break;

case 'b':
case 'B':
    System.out.println("우수 회원 입니다.");
    break;

case 'c':
case 'C':
    System.out.println("일반 회원 입니다");
    break;

default:
    System.out.println("회원이 아닙니다.");

▶ case 문마다 break라는 문장이 있는데, 만약 break 문이 빠져 있다면 그 다음의 case 문에 속한 문장들이 실행된다.


예제3-1

 

Q. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용

1) 모든 학생의 점수 출력

2) 평균 점수 

3) 최고 점수와 그 학생의 번호 (1번부터 시작) 

※ 조건: 배열과 for문 사용, 입력은 scanner 사용

public static void main(String[] args) {
    /*
     * 퀴즈. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용해 1) 모든 학생의 점수 출력 2)
     * 평균 점수 3) 최고 점수와 그 학생의 번호 (1번부터 시작) 조건: 배열과 for문 사용, 입력은 scanner 사용
     */
    Scanner scanner = new Scanner(System.in);
    // 변수 선언 및 초기화
    int[] scoresArr = new int[6]; // 점수를 저장할 배열. 1번부터 시작해야 하므로, 1~5까지 받음
    int totalScore = 0; // 총점 변수 선언 및 초기화
    int maxScore = 0; // 최고점 변수 선언 및 초기화
    String[] students = new String[6]; // 학생 배열 선언
    String bestStudent = null; // 가장 잘한 학생 변수 선언 및 초기화
    System.out.println("5명의 점수를 입력해 주세요:");

    for (int i = 1; i < scoresArr.length; i++) { // i 시작은 1부터, i가 점수 배열보다 작은 동안, 1씩 증가
        students[i] = "학생" + i; // 학생 1~5까지 저장
        System.out.print("학생" + i + "의 점수:");
        scoresArr[i] = scanner.nextInt(); // 점수 입력 받음
        totalScore += scoresArr[i]; // 총점은 점수 반복 시마다 더함
        if (scoresArr[i] > maxScore) { // 만약 입력받은 점수가 최고점보다 큰 경우
            maxScore = scoresArr[i]; // 최고점에 큰 점수 입력됨
            bestStudent = students[i]; // 해당 학생도 저장
        }
    }
    System.out.println("### 모든 학생의 점수 ###");
    for (int i = 1; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 각 학생과 해당 학생의 점수 출력
        System.out.println(students[i] + ": " + scoresArr[i] + "점");
    }
    int avgScore = (totalScore / (scoresArr.length - 1)); // 평균은 총점 / 개수-1 (6개 이므로 하나 뺌)
    System.out.println("총점: " + totalScore + "점");
    System.out.println("평균 점수: " + avgScore + "점");
    System.out.println("최고 점수: " + maxScore + "점 / " + "가장 잘한 학생: " + bestStudent);

}


예제3-2

 

Q. 예제3-1에서 아래 세 가지 추가

추가1. 최저점수와 그 학생 번호 출력

추가2. 80점 이상인 학생 수를 계산하여 출력

추가3. 점수를 내림차순으로 정렬하여 출력 (버블 정렬 사용)

public static void main(String[] args) {
    /*
     * 퀴즈. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용해 1) 모든 학생의 점수 출력 2)
     * 평균 점수 3) 최고 점수와 그 학생의 번호 (1번부터 시작) 조건: 배열과 for문 사용, 입력은 scanner 사용 추가1. 최저
     * 점수와 그 학생 번호 출력 추가2. 80점 이상인 학생 수를 계산하여 출력 추가3. 점수를 내림차순으로 정렬하여 출력 (버블 정렬 사용)
     */
    Scanner scanner = new Scanner(System.in);
    // 변수 선언 및 초기화
    Integer[] scoresArr = new Integer[5]; // 점수를 저장할 배열.
    int totalScore = 0; // 총점 변수 선언 및 초기화
    int maxScore = 0; // 최고점 변수 선언 및 초기화
    int minScore = 999; // 최저점 변수 선언 및 초기화
    String[] students = new String[5]; // 학생 배열 선언
    String highestStudent = null; // 가장 점수가 높은 학생 변수 선언 및 초기화
    String lowestStudent = null; // 가장 점수가 낮은 학생 변수 선언 및 초기화
    int overEighties = 0; // 80점 이상 학생수 저장할 변수 선언 및 초기화

    // 프로그램 시작
    System.out.println("5명의 점수를 입력해 주세요:");

    for (int i = 0; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 1씩 증가
        students[i] = "학생" + (i + 1); // 학생 1~5까지 저장
        System.out.print("학생" + (i + 1) + "의 점수:");
        scoresArr[i] = scanner.nextInt(); // 점수 입력 받음
        totalScore += scoresArr[i]; // 총점은 점수 반복 시마다 더함
        if (scoresArr[i] > maxScore) { // 만약 입력받은 점수가 최고점보다 큰 경우
            maxScore = scoresArr[i]; // 최고점에 큰 점수 입력됨
            highestStudent = students[i]; // 해당 학생도 저장
        }
        if (scoresArr[i] < minScore) { // 입력받은 점수가 최저점보다 작은 경우
            minScore = scoresArr[i]; // 최저점에 작은 점수 입력됨
            lowestStudent = students[i]; // 해당 학생도 저장
        }
        if (scoresArr[i] >= 80) { // 80점 이상이면 overEighties 1씩 증가
            overEighties++;
        }

    }
    System.out.println("### 모든 학생의 점수 ###");
    for (int i = 0; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 각 학생과 해당 학생의 점수 출력
        System.out.println(students[i] + ": " + scoresArr[i] + "점");
    }
    double avgScore = (totalScore / (scoresArr.length)); // 평균은 총점 / 개수
    System.out.println("총점: " + totalScore + "점");
    System.out.println("평균 점수: " + avgScore + "점");
    System.out.println("최고 점수: " + maxScore + "점 / " + "점수가 가장 높은 학생: " + highestStudent);
    System.out.println("최저 점수: " + minScore + "점 / " + "점수가 가장 낮은 학생: " + lowestStudent);
    System.out.println("80점 이상 학생 수: " + overEighties + "명");

    // 내림차순으로 정렬
    System.out.println("### 내림차순으로 정렬된 점수 ###");
    Arrays.sort(scoresArr, Collections.reverseOrder());
    System.out.println(Arrays.toString(scoresArr));
    for (int i = 0; i < scoresArr.length; i++) {
        System.out.println(i + 1 + "등: " + scoresArr[i] + "점");
    }

    scanner.close();

}

 

[버블 정렬 구현]

// 버블 정렬
for (int i = 0; i < scoresArr.length - 1; i++) {
    for (int j = 0; j < scoresArr.length - 1 - i; j++) {
        if (scoresArr[j] < scoresArr[j + 1]) { // 내림차순: 두 요소를 비교하여 큰 값을 앞으로 이동시킴
            // 스왑
            int temp = scoresArr[j];
            scoresArr[j] = scoresArr[j + 1];
            scoresArr[j + 1] = temp;
        }
    }
}
System.out.println("### 내림차순으로 정렬된 점수 ###");
for (int score : scoresArr) {
    System.out.println(score + " ");
}


예제4-1

 

Q. 한 반에 3명의 학생이 있고, 각 학생은 서로 다른 횟수의 시험을 봤다. 이 시험 점수를 2차원 배열에 저장하고, 다음을 계산하라.

1. 각 학생의 시험 점수 출력

2. 각 학생의 평균 점수

3. 전체 학생의 최고 점수와 그 학생 번호(1번부터 시작)

 

조건1. 2차원 배열을 사용하며, 각 행(학생)의 열 길이(시험 횟수)는 다르게 설정

조건2. 배열과 for 문 활용

조건3. 입력은 미리 정의된 값으로 사용

public static void main(String[] args) {
    /*
     * 학생별 시험 점수 관리 (열의 길이가 다른 2차원 배열) Q. 한 반에 3명의 학생이 있고, 각 학생은 서로 다른 횟수의 시험을 봤다. 이
     * 시험 점수를 2차원 배열에 저장하고, 다음을 계산하라. 1. 각 학생의 시험 점수 출력 2. 각 학생의 평균 점수 3. 전체 학생의 최고
     * 점수와 그 학생 번호(1번부터 시작) 조건1. 2차원 배열을 사용하며, 각 행(학생)의 열 길이(시험 횟수)는 다르게 설정 조건2. 배열과
     * for 문 활용 조건3. 입력은 미리 정의된 값으로 사용
     */
    int[][] scores = { { 85, 90, 78 }, { 92, 88 }, { 95, 87, 91, 89 } };
    int eachScores = 0;
    double avgScoreByStudent = 0.0;

    System.out.println("### 각 학생의 시험 점수 ###");
    for (int i = 0; i < scores.length; i++) {
        int totalScoreByStudent = 0;
        int examTimes = 0;
        Integer[] scoresArr = new Integer[scores[i].length];
        for (int j = 0; j < scores[i].length; j++) {
            eachScores = scores[i][j];
            scoresArr[j] = eachScores;
            totalScoreByStudent += eachScores;
            examTimes++;
        }
        avgScoreByStudent = totalScoreByStudent / examTimes;
        System.out.println("학생" + (i + 1) + "의 점수: " + Arrays.toString(scoresArr));
        System.out.println("학생" + (i + 1) + " - 총점: " + totalScoreByStudent + "점 / " + "시험 횟수: " + examTimes);
        System.out.println("학생" + (i + 1) + " - 평균점수: " + avgScoreByStudent);
        System.out.println();
    }

}

 

 


예제4-2

 

Q. 예제 4-1에서

1. 각 학생의 최저 점수 출력하도록 코드 수정 

2. 전체 학생 중 90점 이상인 시험의 개수 출력 

3. 학생별로 점수를 오름차순으로 정렬하여 출력 (각 행별로 정렬)

public static void main(String[] args) {
    /*
     * 11번 학생 시험 확장 1. 각 학생의 최저 점수 출력하도록 코드 수정 2. 전체 학생 중 90점 이상인 시험의 개수 출력 3. 학생별로
     * 점수를 오름차순으로 정렬하여 출력 (각 행별로 정렬)
     */
    int[][] scores = { { 85, 90, 78 }, { 92, 88 }, { 95, 87, 91, 89 } };
    int maxScore = 0;
    int overNineties = 0;
    int eachScores = 0;
    double avgScoreByStudent = 0.0;
    String[] students = new String[scores.length];
    String bestStudent = null;

    System.out.println("### 각 학생의 시험 점수###");
    for (int i = 0; i < scores.length; i++) {
        Integer[] scoresArr = new Integer[scores[i].length];

        int scoreByStudent = 0;
        int examTimes = 0;

        int minScoreByStudent = 999;
        int maxScoreByStudent = 0;

        students[i] = "학생" + (i + 1);

        for (int j = 0; j < scores[i].length; j++) {
            eachScores = scores[i][j];
            scoresArr[j] = eachScores;
            scoreByStudent += eachScores;
            examTimes++;
            if (scoresArr[j] < minScoreByStudent) {
                minScoreByStudent = scoresArr[j];
            }
            if (scoresArr[j] > maxScoreByStudent) {
                maxScoreByStudent = scoresArr[j];
            }
            if (scoresArr[j] >= 90) {
                overNineties++;
            }
        }
        avgScoreByStudent = scoreByStudent / examTimes;
        if (maxScoreByStudent > maxScore) {
            maxScore = maxScoreByStudent;
            bestStudent = students[i];
        }

        System.out.println("학생" + (i + 1) + ": " + Arrays.toString(scoresArr));
        System.out.println("학생" + (i + 1) + "의 평균점수: " + avgScoreByStudent + "점");
        System.out.println("학생" + (i + 1) + "의 최저점수: " + minScoreByStudent + "점");
        System.out.println("학생" + (i + 1) + "의 90점 이상 개수: " + overNineties);
        Arrays.sort(scoresArr);
        System.out.println("학생" + (i + 1) + "의 오름차순 점수:" + Arrays.toString(scoresArr));
        System.out.println();
    }
    System.out.println("### 전체 최고 점수###");
    System.out.println(maxScore + "점 - " + bestStudent);
}


다음 내용

 

[java] java - 클래스, this() 코드

이전 내용 [java] 예제 및 풀이 (Switch, 배열 + 반복문)이전 내용 [java] java 예제 및 풀이(scanner, 조건문, do-while)이전 내용 [java] parse+자료형: 문자열 변환이전 내용 [java] 이클립스 한글 깨짐이전 내

puppy-foot-it.tistory.com

 

728x90
반응형