티스토리 뷰

반응형

⊙ 문제

 

키보드로 입력한 정수 값을 학생의 점수로 사용하며 ArrayList에 저장한다. 입력된 정수 값이 음수면 입력의 끝이다. 점수 중에서 최고 점수부터 최고 점수 -10점 이상은 A, 최고 점수 -10 미만부터 최고 점수 -20점 이상은 B처럼 등급을 배정한 후 출력하는 프로그램을 작성하시오.

 


 

⊙ 문제 접근 과정

 

점수를 한번 이상 받아야 해서 do while문을 사용했다. 이 반복문은 음수를 받기 전까지 반복된다.

그리고 Collections에 있는 max() 함수로 입력받은 score 점수 중에서 가장 높은 값을 max라는 변수에 따로 저장했다.

 

그다음으로는 등급을 매겨주는 rating 메서드를 따로 만들어주었다.

만든 rating 메서드를 for문안에서 score.size()만큼 돌려주어 원하는 값을 출력할 수 있었다.

 


 

⊙ 문제 풀이

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int input,max;
        Scanner in = new Scanner(System.in);
        ArrayList<Integer> score = new ArrayList<Integer>();

        do {
            System.out.print("점수를 입력하세요 : ");
            input = in.nextInt();
            if(input>=0) score.add(input);
        } while(input>=0);

        System.out.println("전체 학생은 "+score.size()+"명이다.");
        System.out.print("학생들의 성적 : ");
        for (int s : score)
            System.out.print(s + " ");
        System.out.println();
        max=Collections.max(score);

        Main check = new Main();

        for(int i=0;i<score.size();i++) {
            System.out.println(i+"번 학생의 성적은 "+score.get(i)+"점이며 등급은"+check.rating(score.get(i),max)+"이다.");
        }
    }

    public String rating(int score,int max) {
        if(score>=max-10)
            return "A";
        else if(score<max-10 && score>=max-20)
            return "B";
        else if(score<max-20 && score>=max-30)
            return "C";
        else if(score<max-30 && score>=max-40)
            return "D";
        else return "F";
    }

}

 


⊙ 결과

 

 


 

⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함