본문 바로가기

Java/실습

[Java] 최고점과 평균

사용자에게 옵션을 입력받아서

 

1번을 입력받으면 학생 수를 입력받는다.

 

2번을 입력받으면 학생 수만큼 점수를 입력받는다.

 

3번을 입력받으면  점수리스트를 출력한다.

 

4번을 입력받으면 최고점과 평균을 출력한다.

 

5번을 입력받으면 종료한다.

 

이런 프로그램을 짜보려고합니다.

 

먼저 1번의 경우를 구현해보겠습니다.

 

int student[] = new int[] {};

if (option == 1) {

System.out.println("학생 수를 입력해주세요");

int n = sc.nextInt();

student = new int[n];

 

학생수를 입력받아서 

 

학생수 만큼의 배열을 만들어줍니다.

 

이떄 전역변수의 배열은 null값으로 지정했습니다.

 

for(int j = 0; j < student.length; j++)

{

System.out.printf("%d번째 학생의 점수를 입력하세요.\n", j+1);

student[j] = sc.nextInt();

if(student[j] < 0 || student[j] > 100) {

System.out.println("\t 잘못된 점수 입력!");

j--;

continue;

}

}

 

옵션이 2번일 경우 student 배열에 학생들의

 

점수를 집어넣어줍니다.

 

이떄 점수가 범위를 넘어간다면

 

인덱스를 뒤로 되돌리고

 

continue를 사용해서 다시 입력받습니다.

 

j--;

 

는 인덱스를 되돌려 실행을 취소시키는동작을 해줍니다.

 

 

else if(option == 3) {for(int k =0 ; k < student.length; k++) {

System.out.print(student[k] + " ");

}

 

3번 옵션은 student배열에 있는

 

요소들을 출력해소 보여줍니다.

 

else if(option == 4) {

 

int max = 0;

int sum = 0;

int common = 0;

for(int i = 0; i < student.length; i++)

{ if(student[i] > max) {

max = student[i];

}

sum += student[i];

common = sum / student.length;

}

System.out.printf("평균 점수 : "+ common);

System.out.println();

System.out.printf("최고 점수 : "+ max);

 

4번의 경우 모든 배열의 요소를 비교하여 최댓값인

 

max를 구하고

 

모든 값의 합을 더하여 배열의 수로 나눈 값인

 

평균을 구해서

 

출력합니다.

 

else if(option == 5) {

System.out.println("종료합니다.");

break;

 

5번일 경우 프린트문을 출력후

 

반복문을 종료합니다.

 

else

{System.out.println("옵션을 다시 입력해주세요.");}

 

}

 

다른 옵션일 경우 옵션을 다시 입력하라고

 

출력합니다.

 

 

 

 

 

1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료

1

학생 수를 입력해주세요

3

 

1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료

20

옵션을 다시 입력해주세요.

 

1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료

2

1번째 학생의 점수를 입력하세요.

10

2번째 학생의 점수를 입력하세요.

20

3번째 학생의 점수를 입력하세요.

30

 

1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료

3

10 20 30

1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료

4

평균 점수 : 20

최고 점수 : 30

 

 

 

출력 내용입니다.

 

 

import java.util.Scanner;

 

public class PMain3 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int option = 0;

 

int student[] = new int[] {};

 

while(option != 5) {

System.out.println("\n 1. 학생 수 입력 2. 학생 점수 입력 3. 학생 점수 리스트 4. 최고점 평균 출력 5. 종료");

option =sc.nextInt();

if (option == 1) {

System.out.println("학생 수를 입력해주세요");

int n = sc.nextInt();

student = new int[n];

 

}else if(option == 2) {

 

for(int j = 0; j < student.length; j++)

{

System.out.printf("%d번째 학생의 점수를 입력하세요.\n", j+1);

student[j] = sc.nextInt();

}

 

}else if(option == 3) {for(int k =0 ; k < student.length; k++) {

System.out.print(student[k] + " ");

}

}else if(option == 4) {

 

int max = 0;

int sum = 0;

int common = 0;

for(int i = 0; i < student.length; i++)

{ if(student[i] > max) {

max = student[i];

}

sum += student[i];

common = sum / student.length;

}

System.out.printf("평균 점수 : "+ common);

System.out.println();

System.out.printf("최고 점수 : "+ max);

}else if(option == 5) {

System.out.println("종료합니다.");

break;

}

else

{System.out.println("옵션을 다시 입력해주세요.");}

 

}

 

}

}

 

 

전체 코드입니다.

 

해맸던 부분은 각 if문에서 같은 배열을 사용하려면

 

전역에리어 쪽에 배열을 선언해야하는데

 

null값으로 선언하는 법을 몰라서

 

size를 설정하는 부분에서 어려움을 느낀 것 같습니다.

 

이떄 null값으로 선언하는 법은 크게 두 가지인데

 

int student[] = new int[] {};

 

int student[] = null;

 

이렇게 두 가지입니다.

 

배열을 null로 선언하는 부분이 핵심인 실습이었습니다.

'Java > 실습' 카테고리의 다른 글

[Java] 문자 제거하기  (0) 2024.12.03
[Java] 세균 증식  (0) 2024.12.03
[Java] 최댓값과 최솟값  (0) 2024.12.03
[Java] 버블 정렬 [Bubble Sort]  (0) 2024.12.03
[Java] 함수 파라미터를 무제한으로 거는 법  (0) 2024.11.29