1. JAVA/4). 자바_실전_이클립스

자바실전_Day_12_01(배열_응용02)

구이제이 2024. 1. 17. 13:56

-----------------------------------------------------------------------------------



1번째 예제





●결과값

 

 

//#0.Scanner

Scanner scan = new Scanner(System.in);

 

 

//#1.변수선언

int student = 0;

int score = 0;

int stop = 0;

int input = 0;

int[] studentArray = new int[student];

int max = 0;

int min = 0;

int sum = 0;

int count = 0;

double avg = 0.0;

 

 

//#2.안내 문구 ㅡ 변수입력

 

while(!(5==stop)) {

info();

input = scan.nextInt();

 

if(input == 1) {

studentInfo();

student = scan.nextInt();

studentArray = new int[student];

 

}else if(input == 2) {

 

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

System.out.println((i+1)+"번째 학생 점수 입력 >> ");

studentArray[i] = scan.nextInt();

}

 

}else if(input == 3) {

 

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

System.out.println(i+"번째 학생 점수 입력 = "+studentArray[i] );

 

}

 

 

}else if(input == 4) {

//조건

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

 

min = Math.min(max, studentArray[i]);

max = Math.max(min, studentArray[i]);

sum += studentArray[i];

count++;

 

}

//평균

avg = (double)sum/count;

 

 

//출력

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

System.out.println("최저 점수 : " + min);

System.out.println("평균 : " + min);

 

 

 

 

 

 

}else if(input == 5) {

System.out.println("프로그램 종료");

stop = 5;

}else {

System.out.println("잘못 입력하였습니다.");

}

}

}

 

public static void info() {

 

System.out.println("============================================================");

System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료");

System.out.println("============================================================");

System.out.println("번호 선택 >>");

}

 

public static void studentInfo() {

System.out.println("학생수입력 : ");

}

 

-----------------------------------------------------------------------------------



2번째 예제





●결과값(동일하지만, 내부적으로 메소드 리팩토링을 했다.) - teacher

 

 

 

 

 

 

//#1. Scanner 객체 생성 - 입력받기 위해

static Scanner scan = new Scanner(System.in); //static이 있어야 된다.

 

public static void main(String[] args) {

 

 

//#2 변수 선언 - 지역변수 {}안에서 사용 할 수 있다.

int studentCount = 0; //학생수

int[] scores = null; //배열은 한 번 크기를 설정하면 변경할 수 없다.

//null - 아직 참조하는 고싱 없다. 힙영역을 참고 있지 않다.

boolean run = true; // while문의 진행 여부를 설정하기 위해 사용

// 값이 true이므로 일단 반복을 진행

// true - 반복(while문 실행), false - 반복(while)종료

 

//#3.while문을 실행해서 학생수, 점수입력, 점수리스트, 분석등을 진행

while(run) {

//#3-1.메세지가 반복이므로 메세지 부터 설정

System.out.println("========================================================");

System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료");

System.out.println("========================================================");

System.out.print("번호 선택>>");

int selectNo = scan.nextInt();

 

 

//switch(selectNo) { case 1 : 실행; break;.args.clone().}

if(selectNo==1) { //1.학생수

System.out.print("학생수 입력>>");

studentCount = scan.nextInt();

}else if(selectNo==2) { //2.점수입력

//학생수 만큼의 배열 공간을 만들어 주기, 위에서는 null아직 연결을 안한

//상태이므로 여기에서 공간을 확보 필요

scores = new int[studentCount]; //점수를 담을 배열 생성

inputScore(scores);

//inputScore(new in[studentCount]);

}else if(selectNo==3) {//3.점수리스트

scoreList(scores);

}else if(selectNo==4) {//4.분석

showPrint(scores);

}else if(selectNo==5) {//5.종료

//종료

run = false;

}

}//end of while

 

 

 

}

public static void inputScore(int[] scores) {

 

//배열 공간에 점수 담기-학생 수가 유동적이라 반복문을 사용

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

//안내 문구

System.out.println((i+1) + "번 학생 점수 입력>>");

scores[i] = scan.nextInt(); //입력받은 점수 배열에 담기

 

}//for문의 끝

System.out.println();

}//end of inputScore

 

 

public static void scoreList(int[] scores) {

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

System.out.println((1+i) + "번 학생 점수 = " + scores[i]);

 

}//for문의 끝

}

 

public static void showPrint(int[] scores ) {

int sum = 0; //합계

 

int max = scores[0]; //최저 점수를 초기화

int min = scores[0]; //최저 점수를 초기화

 

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

//최댓값

if(max < scores[i]) { //max에 담긴 값이 i번째 요소보다 작으면

max = scores[i]; //max에는 더 큰 i번째 요소 값 담기

}

 

if(min > scores[i]) { //min에 담긴 값이 i번째 요소보다 크면

min = scores[i]; //min에는 더 작은 i번째 요소 값 담기

}//if문 끝

 

//합계 - 평균을 구하기 위해서 필요

sum += scores[i]; //점수 누적해서 합계 구하기, sum = sum + scores[i]

 

}//for문 끝

 

//평균

double avg = (double)sum/scores.length;

//avg = (double)sum/studentCount;

 

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

System.out.println("최고 점수 : "+ min);

System.out.printf("평균 점수 : %.2f\n",avg);//소수이하 둘쨰자리까지

}