문제 - 과목별 점수를 통해 총점, 평균을 구하여 표형태로 출력해보자.
전체 코드 - 더보기 클릭
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
|
public class Array_Ex2 {
public static void main(String[] args) {
int[][] score = new int[][] {
{100,100,100},
{20,20,20},
{30,30,30},
{40,40,40},
{50,50,50}
};
//과목별 총점
int korTotal = 0;
int engTotal = 0;
int mathTotal = 0;
int totalSum = 0;
double avg = 0.0;
System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
System.out.println("--------------------------------------------");
for (int i = 0; i < score.length; i++) {
int sum = 0;//개인별 총점
double average = 0.0; //개인별 평균
korTotal += score[i][0]; //국어 점수 누적
engTotal += score[i][1];//영어 점수 누적
mathTotal += score[i][2];//수학 점수 누적
//번호를 3개 자리를 차지하며 출력시키는 부분
System.out.printf("%3d", (i+1)); //번호 출력
for (int j = 0; j < score[i].length; j++) {
sum += score[i][j];
System.out.printf("\t%d", score[i][j]);//tap만큼 띄우기
}
totalSum += sum;//총합
average = (double)sum/score[i].length;//개인별 평균
avg += average;//전체 평균
System.out.printf("\t%d \t%.2f\n", sum, average);
}
avg /= (double)score.length;
System.out.println("------------------------------------------------");
System.out.printf("총점\t%d\t%d\t%d\t%d\t%.2f", korTotal, engTotal,mathTotal,totalSum,avg);
}
}
|
cs |
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
|
public class Array_Ex2 {
public static void main(String[] args) {
int[][] score = new int[][] {
{100,100,100},
{20,20,20},
{30,30,30},
{40,40,40},
{50,50,50}
};
//과목별 총점
int korTotal = 0;
int engTotal = 0;
int mathTotal = 0;
int totalSum = 0;
double avg = 0.0;
System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
System.out.println("--------------------------------------------");
}
}
|
cs |
먼저 int 2차원 배열로 값들을 초기화해주었습니다.
여기서 score의 길이는 5이고
score[0]의 길이는 3입니다.
(score[1], score[2].. 도 마찬가지)
과목별 총점들을 선언과 초기화해주었습니다.
요까지하면
이렇게 나옵니다.
그러면 다시 문제를 한번 봅시다.
찬찬히 살펴보면
먼저 번호를 찍고 국어점수 찍고 영어점수 찍고 수학점수 찍고 총점 찍고 평규찍고 한칸 띄우고
번호 찍고 ~~ 5번 반복입니다.
그러니까 for문은 score.length만큼 돌아야겠네요
그리고 총점은 score[0] 의 값들을 모두 더한 값
score[1] 의 값을 모두 더한 값이므로
score[0][0] score[0][1] score[2]를 모두 더한 값이 총점(sum)이구요
평균은 그 총점을 3으로 나누었네요
그러면 sum은 뒷자리가 바껴야 하니 이중 for문으로 돌리면 되겠구요
그리고 국어 총점은
score[0][0] score[1][0] score[2][0] score[3][0] score[4][0] 을 모두 더한 값입니다.
그러면 korTotal은 앞자리가 바껴야하니 바깥 for문에서 돌리면 되겠습니다.
코드를 순차적으로 확인해보겠습니다.
바깥 for문은 score.length인 5만큼 돌고있습니다.
그리고 sum을 0으로 초기화 해주고
평균도 0.0으로 초기화합니다.
아까 말한대로 과목별 점수 누적은 바깥 for문으로 돌립니다.
번호를 출력합니다.
이중 for문은 score[i].length인 3만큼 돌리고있고
sum은 위에서 이야기 했듯이 이중 for문 안에서 돌립니다.
이중 for문으로 배열 안의 값들을 모두 출력합니다.
여기서는 i가 0일때 score[0][0] score[0][1] score[0][2] 까지 출력한다음
밑으로 내려갑니다
totalSum에 sum을 누적하고
average를 구하고
sum과 average를 출력하고 줄 띄움을 해줍니다.
여기서 비로소 바깥 for문 i =0 이 끝난 것입니다.
그럼 다시 바깥 for문 i ++ 해서 i=1 인 for문이 시작됩니다.
그렇게 다섯번을 돈 후
마지막줄을 출력해줍니다.
'JAVA > java 실습' 카테고리의 다른 글
[자바JAVA] 객체지향1 - 클래스와 객체 . Tv클래스로 알아보는 객체배열, 멤버호출방법, 객체주소변경, 향상된 for문 (0) | 2020.10.07 |
---|---|
[자바JAVA] 이차원배열 - String 이차원 배열 ( 3차원배열과 같음)로 단어퀴즈 만들기 (0) | 2020.10.06 |
[자바JAVA] 일차원배열 - 향상된 for문, 배열에서 값 하나씩 가져오기 (0) | 2020.09.29 |
[자바JAVA]일차원배열 - 버블소팅, 배열 오름차순으로 정렬하기, 내림차순 정렬하기 (0) | 2020.09.28 |
[자바JAVA] 일차원 배열 - 배열 복사방법 for문, arraycopy, Arrays.copyOf, Arrays.copyOfRange (0) | 2020.09.28 |