ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쉽게 배우는 자바 프로그래밍 2판 5장 도전문제
    JAVA/연습문제 2022. 10. 13. 15:20
    반응형

    # 개발 공부하는 초보자가 작성한 답안이니 정답이 아닐 수 있습니다!!!

     

     

    1. 학생 수와 점수를 입력하면 각 학생의 성적을 출력하는 프로그램을 작성해보자.

    1-1. 학생 수와 점수를 위한 배열 변수를 선언한다. 그리고 Scanner 클래스도 선언해서 키보드로 데이터를 받을 준비를 한다.

    📢주어진 값📢
    int numOfStudents = 0;
    int scores[];
    Scanner inScanner = new Scanner(System.in);

    1-2. 키보드로 학생 수를 입력받고 입력된 학생 수에 해당하는 크기의 scores 배열을 생성한다.

    📢주어진 값📢
    numOfStudents = inScanner.nextInt();
    scores = ______________;

    1-3. for 문을 이용해 학생 수만큼 키보드로 성적을 입력받은 후 출력하도록 한다. 그리고 프로그램을 실행한 후 결과를 확인한다.

    📢주어진 값📢
    System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
    for (int i = 0; i < scores.length; i++) {
    	// 키보드 값을 배열에 대입하는 코드
        
    System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
    for (int i = 0; i < scores.length; i++) {
    	// 배열 원소를 출력하는 코드
    }
    🧤정답🧤
    	public static void main(String[] args) {
    		int numOfStudents = 0;
    		int scoreOfStudents = 0;
    		int scores[];
    		Scanner inScanner = new Scanner(System.in);
    
    		System.out.printf("학생 수? ");
    		numOfStudents = inScanner.nextInt();
    		scores = new int[numOfStudents];
    
    		System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
    		for (int i = 0; i < scores.length; i++) {
    			scoreOfStudents = inScanner.nextInt();
    			scores[i] = scoreOfStudents;
    			System.out.println(scores[i]);
    		}
    		System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
    		for (int i = 0; i < scores.length; i++) {
    			System.out.print(scores[i] + " ");
    		}
    	}
    }

     

     

     

    2. 1번의 프로그램을 for문과 if~else문을 사용해 학생들의 등급을 출력하는 프로그램으로 확장해보자. 그리고 이번에는 for~each 문도 사용해보자.

    2-1. 1번 코드에서 for~each 문으로 사용할 수 있는 곳은 바꿔본다.

    🧤정답🧤
    	public static void main(String[] args) {
    		int numOfStudents = 0;
    		int scoreOfStudents = 0;
    		int scores[];
    		Scanner inScanner = new Scanner(System.in);
    
    		System.out.printf("학생 수? ");
    		numOfStudents = inScanner.nextInt();
    		scores = new int[numOfStudents];
    
    		System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
    		for (int i = 0; i < scores.length; i++) {
    			scoreOfStudents = inScanner.nextInt();
    			scores[i] = scoreOfStudents;
    			System.out.println(scores[i]);
    		}
    		System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
    		for (int i : scores) {
    			System.out.print(i + " ");
    		}
    	}
    }

    2-2. 1번에서 작성한 프로그램에서 메인 메서드의 마지막에 다음과 같은 for문을 추가한다.

    📢주어진 값📢
    for (int i = 0; _________; i++){
    }

    2-3. if~else문을 사용해 scores 배열의 각 원소에 대하여 점수 구간별로 등급을 출력하는 코드를 추가한다. 그리고 프로그램을 실행한 후 결과를 확인한다.

    📢주어진 값📢
    if (______________)
    	System.out.println((i + 1) + "번 학생의 등급은 A입니다.");
    else if
    	...
    🧤정답🧤
    	public static void main(String[] args) {
    		int numOfStudents = 0;
    		int scoreOfStudents = 0;
    		int scores[];
    		int scores2[];
    		Scanner inScanner = new Scanner(System.in);
    
    		System.out.printf("학생 수? ");
    		numOfStudents = inScanner.nextInt();
    		scores = new int[numOfStudents];
    		scores2 = new int[numOfStudents];
    
    		System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
    		for (int i = 0; i < scores.length; i++) {
    			scoreOfStudents = inScanner.nextInt();
    			scores[i] = scoreOfStudents;
    		}
    
    		System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
    		for (int i = 0; i < scores.length; i++) {
    			System.out.print(scores[i] + " ");
    		}
    		System.out.println();
    
    		for (int i = 0; i < scores2.length; i++) {
    			scores2[i] = i;
    		}
    		for (int i : scores2) {
    			if (scores[i] >= 90) {
    				System.out.println((i + 1) + "번 학생의 등급은 A입니다.");
    			} else if (scores[i] >= 80) {
    				System.out.println((i + 1) + "번 학생의 등급은 B입니다.");
    			} else if (scores[i] >= 70) {
    				System.out.println((i + 1) + "번 학생의 등급은 C입니다.");
    			} else if (scores[i] >= 60) {
    				System.out.println((i + 1) + "번 학생의 등급은 D입니다.");
    			} else {
    				System.out.println((i + 1) + "번 학생의 등급은 E입니다.");
    			}
    		}
    	}
    }

     

     

    3. 2의 프로그램에서 등급에 대한 내용을 열거 타입을 사용하여 수정해보자.

    3-1. 2번 코드에서 다음과 같은 내용을 열거 타입으로 추가한다.

    📢주어진 값📢
    A는 최우수
    B는 우수
    C는 보통
    D는 미흡
    E는 탈락

    3-2. 2번 코드에서 학생의 성적에 대한 등급을 화면에 나타낼 때 A혹은 B와 같은 등급 대신에 '최우수'. '우수' 등으로 나타나도록 수정하라. 그리고 프로그램을 실행한 후 다음 결과처럼 나타나는지 확인하라.

    🧤정답🧤
    public enum Grade {
    	A("최우수"), B("우수"), C("보통"), D("미흡"), E("탈락");
    
    	private String s;
    
    	private Grade(String s) {
    		this.s = s;
    	}
    
    	public String toString() {
    		return s;
    	}
    }
    
    
    	public static void main(String[] args) {
    		int numOfStudents = 0;
    		int scoreOfStudents = 0;
    		int scores[];
    		Grade grade;
    		Scanner inScanner = new Scanner(System.in);
    
    		System.out.printf("학생 수? ");
    		numOfStudents = inScanner.nextInt();
    		scores = new int[numOfStudents];
    
    		System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
    		for (int i = 0; i < scores.length; i++) {
    			scoreOfStudents = inScanner.nextInt();
    			scores[i] = scoreOfStudents;
    		}
    
    		System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
    		for (int i = 0; i < scores.length; i++) {
    			System.out.print(scores[i] + " ");
    		}
    		System.out.println();
    
    		for (int i = 0; i < scores.length; i++) {
    			if (scores[i] >= 90) {
    				grade = Grade.valueOf("A");
    				System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
    			} else if (scores[i] >= 80) {
    				grade = Grade.valueOf("B");
    				System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
    			} else if (scores[i] >= 70) {
    				grade = Grade.valueOf("C");
    				System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
    			} else if (scores[i] >= 60) {
    				grade = Grade.valueOf("D");
    				System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
    			} else {
    				grade = Grade.valueOf("E");
    				System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
    			}
    		}
    	}
    }
    반응형

    댓글

Designed by Tistory.