2차원 배열 예제
반응형
2차원 배열 예제
[Ex5_8]
public class Ex5_8 {
public static void main(String[] args) {
int[][] score = {
{100, 100, 100},
{20, 20, 20},
{30, 30, 30},
{40, 40, 40}
};
int sum = 0;
for(int i = 0; i < score.length; i = i + 1) {
for (int j = 0; j < score[i].length; j = j + 1) {
System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
sum = sum + score[i][j];
}
}
System.out.println("sum=" + sum);
}
}
[실행 결과]
score[0][0]=100
score[0][1]=100
score[0][2]=100
score[1][0]=20
score[1][1]=20
score[1][2]=20
score[2][0]=30
score[2][1]=30
score[2][2]=30
score[3][0]=40
score[3][1]=40
score[3][2]=40
sum=570
이 예제는 2차원 배열 score에 저장되어 있는 값들을 변수sum에 모두 더해서 저장하고, 출력하는 예제이다.
2차원 배열의 모든 요소를 탐색해야하므로 이중반복문을 사용했다.
score배열을 그림으로 표현 한 것이다.
score.length가 가리키는 것은 score배열의 행이다. 행은 4이다.
그리고, score[i].length가 가리키는 것은 각 행에 담겨있는 데이터의 갯수, 즉 열의 갯수 이다.
따라서 열은 3이다.
지금은 모든 행에 담겨있는 데이터의 갯수가 3개로 동일하므로
이중포문에서 안에 있는 for문의 조건문에 score[i].length대신, score[0]을 써도 되지만,
혹시 다른 경우도 있을 경우를 대비해서 코드를 짠 것이다.
이중 반복문이 4번 * 3번 도므로 총 12번을 돌아서 각 요소의 값을 하나씩 탐색하는 것이다.
[Ex5_9]
import java.util.*;
public class Ex5_9 {
public static void main(String[] args) {
int[][] score = {
{100, 100, 100,},
{20, 20, 20},
{30, 30, 30},
{40, 40, 40},
{50, 50, 50}
};
// 과목별 총점
int korTotal = 0, engTotal = 0, mathTotal = 0;
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("==========================");
for (int i = 0; i < score.length; i = i + 1) {
int sum = 0; // 개인별 총점
float avg = 0.0f; // 개인별 평균
korTotal = korTotal + score[i][0];
engTotal = engTotal + score[i][1];
mathTotal = mathTotal + score[i][2];
System.out.printf("%3d", i + 1); // println이 아니라 printf여서 개행문자를 적어주지 않는 한, 다음줄로 넘어가지 않음
for (int j = 0; j < score[i].length; j = j + 1) {
sum = sum+score[i][j];
avg = sum / (float)score[i].length;
}
System.out.println(" "+score[i][0]+" "+score[i][1]+" "+score[i][2]+" "+sum+" "+avg);
}
System.out.println("==========================");
System.out.println("총점:"+korTotal+" "+engTotal+" "+mathTotal);
}
}
[실행 결과]
번호 국어 영어 수학 총점 평균
==========================
1 100 100 100 300 100.0
2 20 20 20 60 20.0
3 30 30 30 90 30.0
4 40 40 40 120 40.0
5 50 50 50 150 50.0
==========================
총점:240 240 240
이 예제는 score라는 2차원 배열이 있을 때, 해당 배열을 이용해서 각 과목의 점수와 총점, 그리고 평균을 구하는 예제이다.
어렵지 않게 풀이 할 수 있을 것이다.
[Ex5_10]
import java.util.Scanner;
public class Ex5_10 {
public static void main(String[] args){
String[][] words = {
{"chair", "의자"}, // words[0][0], words[0][1]
{"computer", "컴퓨터"}, // words[1][0], words[1][1]
{"integer", "정수"} // words[2][0], words[2][1]
};
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < words.length; i = i + 1){
System.out.printf("Q%d. %s의 뜻은?", i + 1, words[i][0]);
String tmp = scanner.nextLine();
if(tmp.equals(words[i][1])) {
System.out.printf("정답입니다. %n%n");
} else {
System.out.printf("틀렸습니다. 정답은 %s입니다. %n%n", words[i][1]);
}
}
}
}
[실해 결과]
Q1. chair의 뜻은?의자
정답입니다.
Q2. computer의 뜻은?콤퓨타
틀렸습니다. 정답은 컴퓨터입니다.
Q3. integer의 뜻은?정수
정답입니다.
이 예제는 퀴즈를 생성하는 예제이다.
2차원 배열의 특성을 이용해 보자.
반응형
'JAVA' 카테고리의 다른 글
객체지향 언어 (0) | 2022.03.24 |
---|---|
Arrays로 배열 다루기 (0) | 2022.03.23 |
2차원 배열 (0) | 2022.03.23 |
커맨드 라인 입력받기 (0) | 2022.03.23 |
String클래스 (0) | 2022.03.23 |
댓글
이 글 공유하기
다른 글
-
객체지향 언어
객체지향 언어
2022.03.24 -
Arrays로 배열 다루기
Arrays로 배열 다루기
2022.03.23 -
2차원 배열
2차원 배열
2022.03.23 -
커맨드 라인 입력받기
커맨드 라인 입력받기
2022.03.23