3명의 데이터를 입력 받아 학생들의 총점과 평균을 구하세요.
Scanner sc = new Scanner(System.in);
// 이름이 3개 -> 3칸 배열
// 평균도 세개 -> 3칸 배열
// 번호,국어,영어,수학,총점 * 3 -> 3줄 5칸
String name[] = new String[3]; // 이름 3개 배열로 받을게
int[][] score = new int[3][5]; // 숫자 타입의 모든 거 점수로 배열 만든다
float avg[] = new float[3]; // 3명 평균 계산할 것 배열로 만듬
String[] title = { "이름", "번호", "국어", "영어", "수학", "총합", "평균" };
// 입출력에 사용 할 문자열 저장
int i, j;
for (i = 0; i < name.length; i++) { // 3명이라 3명 반복
System.out.println(title[0] + " : "); //타이틀의 0번을 꺼내 입력하라 말하고
name[i] = sc.next(); // 이름은 1차원 배열. 입력 받은 값을 i 에 넣어
for (j = 0; j < 4; j++) { // 왜 j<4이냐면, 총점전가지 입력데이터를 받아야해서
System.out.println(title[j + 1] + " : ");
// 타이틀에 j+1 이 뜻은 타이틀 0번이 이름이라 1번 부터 시작해야 해서
// 사용자들에게 보여지는게 사실은 0부터가 아니라 1번 부터라서
score[i][j] = sc.nextInt(); // 1차원 행렬 이름에 i(이름 입련 된);
//i 번째 줄과 맞처서 가로로 출력 할 예정
// 첫번쨰 애 이름이 윤이다 name[0], 그 친구의 번국영수 계산은 score[0][0],[0][1] ...
if (j != 0) { // 번호를 제외한 여기서 j의 0은 번호임.
score[i][4] += score[i][j]; // 2차원 배열 스코어에
//i(이름)에 4(총합) = i(이름)에 4(총합)+i(이름)+j(국어-수학)
// 0변 방은 번호이다. 이름이 아닌거에 유의하자
}
}
avg[i] = (float) score[i][4] / 3;// 강제 형변환 써서 스코어 합계의 평균을 구해
//i(가로 줄에)(총합) /3
}
for (i = 0; i < title.length; i++) { // 타이틀 전부 출력
System.out.print(title[i] + "\t");
}
System.out.println();
for (i = 0; i < 3; i++) {
System.out.print(name[i] + "\t"); // 이름 따로 쭉 출력 후
for (j = 0; j < score[i].length; j++) {
System.out.print(score[i][j] + "\t");
} //2차원 스코어 배열에 있는 모든 값을 프린트
System.out.println(avg[i]); //마지막으로 평균도
}
1번의 코드와 아주 비슷한 형태를 띄고 있지만 이건 3명의 입력값을 받아야 함으로 2차원 배열을 활용한다.
이름과 평균은 1차원 (왜? 둘만 타입명이 다르기 때문에! ) 나머지는 2차원 배열에 받아 진행한다.
이름을 받은 1차원 배열에 int i 를 할당해 주었고 숫자 타입의 나머지에게는 j 를 할당하여 확실하게 구분이 가게 설계해준다.
프린트도 깔끔하게 잘 나온다~
'JAVA' 카테고리의 다른 글
[JAVA] 자바 1 - 100 사이 숫자 중 짝수의 합계 구하기 (0) | 2023.02.22 |
---|---|
[JAVA] 자바 피보나치 수열 배열로 구하기 (0) | 2023.02.22 |
[JAVA] 자바 배열을 이용한 학생 성적표 만들기 (0) | 2023.02.22 |
[JAVA] 자바 입력 값을 받는 배열 예제 (0) | 2023.02.21 |
[JAVA] 자바 형변환 (0) | 2023.02.21 |