타닥타닥 개발자의 일상

자바java 2차원 배열 이용하여 학생들의 정보, 점수 2차원 배열에 입력 받고 총점, 등수 출력하기 본문

코딩 기록/Java

자바java 2차원 배열 이용하여 학생들의 정보, 점수 2차원 배열에 입력 받고 총점, 등수 출력하기

NomadHaven 2021. 12. 14. 01:46

// 학생들의 정보를 2차원배열에 입력을 받는다 (이름, 생년월일, 국어, 영어, 수학)

//2차원 배열을 이용하여 학생들 개개인의 국영수 총점, 학생들의 국어 점수 총점, 학생들의 등수를 출력하라

 

import java.util.Arrays;

import java.util.Scanner;

public class StudentA {

public static void main(String[] args) {

 

 

String student[][] =

{ // 국어 영어 수학

{ "홍길동", "1999-01-23", "100", "90", "75" },

{ "성춘향", "2010-07-04", "90", "100", "95" },

{ "일지매", "2001-03-05", "85", "95", "100" },

};

 

 

int sum[] = sumFunc(student);

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

System.out.print(student[i][0] + "의 총점:" + sum[i] + "\n");

}

 

int langSum = languageSum(student);

System.out.println("국어의 합계점수:" + langSum);

 

int index = classTop(sum); System.out.println

("클래스의 1등은 " + student[index][0] + "님입니다");

 

 

}

 

 

static String[][] input(){ //문자열 배열을 자료형으로 출력하는 input이란 이름을 가진 함수

Scanner sc = new Scanner(System.in);

 

String student[][] = null; //student라는 이차원 배열을  null로 초기화

 

System.out.print("학생 수 = ");

int count = sc.nextInt(); //입력받은 수를  count라는 정수형 변수로 지정

student = new String[count][5]; //student라는 2차원 배열은 count수를 행의수, 5를 열의 수로하는 2차원 배열로 초기화

 

for (int i = 0; i < student.length; i++) { //1행에 있는 변수값(5개) 돌고 2행으로 가서 다시 돈다 그걸 count수만큼 반복.

System.out.print("이름:"); //이름:이란 출력화면이 뜨고 입력한 값은 문자형 name이라는 변수로 저장

String name = sc.next();

 

System.out.print("생년월일:");

String birth = sc.next();

 

System.out.print("국어:");

String lang = sc.next();

 

System.out.print("영어:");

String eng = sc.next();

 

System.out.print("수학:");

String math = sc.next();

 

student[i][0] = name; //i행 0열의 값 name

student[i][1] = birth;

student[i][2] = lang;

student[i][3] = eng;

student[i][4] = math;

}

return student; //위에서 정의된  student라는 이차원 배열로 값 전달, student 이차원 배열 return값으로 초기화

}

 

 

// 각 학생들의 국어, 영어, 수학을 합친 총점은? 개개인의 총점

static int[] sumFunc(String[][] student) { //2차원 배열을 입력 받아 정수형 1차원 배열을 출력하는 SumFunc

int sum[] = new int[student.length]; //sum은 2차원배열 student의 행의 수를 변수 개수로 가지는 1차원 정수형 배열

int temp; // 1명분에 대한 성적의 합계

for (int j = 0; j < student.length; j++) {  //2차원 배열 student의 행의 수만큼 반복되는 동안 

temp = 0;

for (int k = 2; k < student[j].length; k++) { // j행의 2번째 열부터 반복되는 동안

temp = temp + Integer.parseInt(student[j][k]);  //temp 는 student[j][k]값을 정수형으로 변환한 값의 합 

}

sum[j] = temp;  //1차원 배열 sum의 변수들은 temp의 값

}

return sum;  //1차원 배열 sum을 반환

}

 

//국어점수 합계

static int languageSum(String student[][]) {

int langSum = 0;

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

langSum = langSum + Integer.parseInt(student[i][2]);

}

return langSum;

}

 

static int classTop(int sum[]) {

int top = sum[0];

int index = 0;

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

if(sum[i] > top) {

top = sum[i];

index = i;

}

}

return index;

}

 

}

 

 

출력화면
홍길동의 총점:265
성춘향의 총점:285
일지매의 총점:280
국어의 합계점수:275
클래스의 1등은 성춘향님입니다
Comments