관리 메뉴

프로그래밍 삽질 중

이것이 자바다 5강 확인문제 9번 : Array(배열) + Scanner문제 본문

과거 프로그래밍 자료들/자바(Java)

이것이 자바다 5강 확인문제 9번 : Array(배열) + Scanner문제

평부 2021. 2. 25. 23:32

※ 해당 문제는 응용할 방법이 많으며(계좌 입출금 등) 

Scanner와 Array에 대해 다시 생각해 볼 수 있는 문제라 생각

 

[문제 9번]

다음은 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서, 최고 점수 및 평균 점수를 구하는 프로그램이다

실행 결과를 보고 알맞게 정리하라

* int slecNo = scanner.nextInt(); : 콘솔에 입력된 숫자를 읽고 리턴함(Scanner 설명)

 

 

예)  * 굵은 글씨가 입력값

_______________________

1. 학생 수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료

_______________________

선택 > 1

학생 수 > 3

_______________________

1. 학생 수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료

_______________________

선택 > 2

scores[0] : > 85

scores[1] : > 95

scores[2] : > 93

_______________________

1. 학생 수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료

_______________________

선택 > 3

scores[0] : 85

scores[1] : 95

scores[2] : 93

_______________________

1. 학생 수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료

_______________________

선택 > 4

최고 점수 : 95

평균 점수 : 91.0

_______________________

1. 학생 수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료

_______________________

선택 > 5

프로그램 종료 

 

 

 

[문제 9번 답 - 설명 미포함]

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Scanner;
 
public class ThisisJava_509Ex {
 
    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.println("선택 > ");
            
        int selectNo = scanner.nextInt();
        
        if(selectNo == 1) { 
            System.out.println("학생수 > ");
            studentNum = scanner.nextInt();
            scores = new int[studentNum]; 
            System.out.println("학생들 점수 저장용 배열의 크기는 " + scores.length);
        } else if(selectNo == 2) {
            for(int i=0; i<studentNum; i++) {
                System.out.printf("score[%d]>", i); 
                scores[i] = scanner.nextInt(); 
            }
        } else if(selectNo == 3) {
            for(int i=0; i<studentNum; i++) {
                System.out.printf("scores[%d]> %d\n", i, scores[i]);
            }
        } else if(selectNo == 4) {
            int max = scores[0];
            int sum = 0//합
            double average = 0.0;
            for(int i=0; i<studentNum-1; i++) {
                if(max<scores[i+1]) {
                    max = scores[i+1]; 
                }
            }
            for(int i=0; i<studentNum; i++) {
                sum+=scores[i];
            }
            average  = sum / ((double) studentNum);
            System.out.println("최고점수 : " + max);
            System.out.println("평균점수 : " + average);
        } else if(selectNo == 5) {
            run = false;
            } 
        }
        System.out.println("프로그램 종료");
    }
 
}
 
 
cs

 

 

 

 

 

 

[문제 9번 답 - 설명 포함]

 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.Scanner;
 
public class ThisisJava_509Ex {
 
    public static void main(String[] args) {
        boolean run = true;  //무한루프 돌다가 5번 선택하면 false, 프로그램 종료
        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.println("선택 > ");
            
        int selectNo = scanner.nextInt();
        
        if(selectNo == 1) { //학생 수 선택
            System.out.println("학생 수 > ");
            studentNum = scanner.nextInt(); 
            //학생 점수 수(배열을 만듦) = 학생 수
            scores = new int[studentNum];
            System.out.println("학생들 점수 저장용 배열의 크기는 " + scores.length);
//            System.out.println(scores);
//            System.out.println(studentNum); : 단순 scanner값 입력
//            System.out.println("학생들 점수 저장용 배열의 크기는2 " + scores); : [I@2f4d3709 이런 식으로 나옴
        } else if(selectNo == 2) { //점수 입력
                //위의 배열 만든 것에 값 넣기
            for(int i=0; i<studentNum; i++) { //scores.length는?
                System.out.printf("scores[%d]: >\n", i); //배열에 값 넣기 전
                scores[i] = scanner.nextInt(); // 점수를 넣음
                }
            } else if(selectNo == 3) { //점수 넣은 것 리스트로 보이기
                for(int i=0; i<studentNum; i++) {
                    System.out.printf("scores[%d]: %d\n", i, scores[i]);
                }
            } else if(selectNo == 4) { //분석(최고점수, 평균점수)
                int max = scores[0];
                int sum = 0;
                double avg = 0;
                /* 오류 : for(int i=max; i<studentNum; i++) {
                    if(max<scores[i]) {
                        max = scores[i];
                    } System.out.println("최고 점수 : " + max);*/
                for(int i=0; i<studentNum-1; i++) {//studentNum하면 배열부족, -1해야 함
                    if(max<scores[i+1]) { //scores[i]만 하면 중복발생
                        max = scores[i+1];
                    } 
                }
                for(int i=0; i<studentNum; i++) {
                    sum += scores[i];
                    //avg = sum / ((double)studentNum); //값이 적게 나옴
                }
                avg = sum / ((double)studentNum); //올바른 값이 나옴
                System.out.println("최고 점수 : " + max);
                System.out.println("평균 점수 : " + avg);
        } else if(selectNo == 5) {
            run = false;
            } 
        }
        System.out.println("프로그램 종료");
            }
 
        }
 
 
cs