728x90
반응형
2차원 배열 인덱스 개념
public class Daily_Tstory {
public static void main(String[] args) {
//2차원 배열의 인덱스
int[][] i = new int[3][3];
i[2][2] = 3;
int result = i[2][2]; //3까지 배열의 길이를 지정했으므로 2까지 출력 가능
System.out.println(i[2][2]);
System.out.println(result);
int[][] j = {{1,2,3},{4,5,6}}; //2차원 배열은 {{}}를 씀으로써 배열 구분
int [][] k = {
{1,2,3},
{4,5,6}
}; // 2차원 배열의 가독성을 위해 위의 형식으로 많이 씀
System.out.println(j[0][2]);
//2차원 배열의 길이 지정, 값 배정 후 총합계 출력하는 예시
int[][] i = new int[5][5];
int sum = 0;
for(int j = 0; j<i.length; j++) {
for(int k = 0; k<i[j].length; k++) {
i[j][k]=k+1;
System.out.printf("i[%d][%d] = %d%n", j, k, i[j][k]);
sum += i[j][k];
}
}
System.out.println(sum);
}
}
2차원 배열 예시문제
public class Daily_Tstory {
public static void main(String[] args) {
//4명의 학생의 총점과 평균을 구하는 예시
// 국 영 수
// 40 70 50
// 80 100 95
// 60 78 79
// 89 99 82
int[][] score = {
{40,70,50},
{80,100,95},
{60,78,79},
{89,99,82}
};
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("============================");
int kscore = 0, escore = 0, mscore = 0;
int sum = 0;
float ave = 0.0f;
for(int i=0; i<score.length; i++) {
kscore += score[i][0];
escore += score[i][1];
mscore += score[i][2];
System.out.printf("%2d",(i+1)); //정수가 3보다 작으면 오른쪽 채워지는 식
for(int j=0; j<score[i].length; j++) {
sum +=score[i][j];
ave =sum/score[i].length;
System.out.printf("%5d",score[i][j]);
}
System.out.print(" "+sum);
System.out.println(" "+ave);
sum = 0;
}
System.out.print("총점: ");
System.out.printf("%3d %4d %4d%n",kscore,escore,mscore);
}
}
출력문:
번호 국어 영어 수학 총점 평균
============================
1 40 70 50 160 53.0
2 80 100 95 275 91.0
3 60 78 79 217 72.0
4 89 99 82 270 90.0
총점: 269 347 306
2차원 배열 예시문제2
import java.util.Scanner;
public class Daily_Tstory {
public static void main(String[] args) {
//2차원 배열을 만들어서 해당 배열의 문제 답안이 같으면 O 틀리면 X
String[][] str = { {"chair","의자"}
,{"desk","책상"}
,{"coffee","커피"}};
Scanner scanner = new Scanner(System.in);
for(int i=0; i<str.length; i++) {
System.out.println("다음"+str[i][0]+"의 한국말은 무엇일까요?");
String input = scanner.nextLine(); //입력받은 String 타입을 input으로 저장
if(input.equals(str[i][1])) //입력받은 input 변수가 array에 할당된 값[?][1]과 같으면 O 틀리면 X
System.out.println("O");
else
System.out.println("X");
}
}
}
출력문:
다음chair의 한국말은 무엇일까요?
as
X
다음desk의 한국말은 무엇일까요?
책상
O
다음coffee의 한국말은 무엇일까요?
커피
O
2차원 배열 Arrays 사용
Arrays.toString
Arrays.deepToString
Arrays.equals()
Arrays.deepEquals()
Arrays.copyOf()
Arrays.copyOfRange()
Arrays.sort()
import java.util. Arrays;
public class Daily_Tstory {
public static void main(String[] args) {
//Arrays Method로 array 다루기
int[] array = {1,2,3};
int[][] arr2d = {{1,2,3},{4,5,6}};
System.out.println(Arrays.toString(array)); //1차원 배열은 Arrays.toString
System.out.println(Arrays.deepToString(arr2d)); //2차원 배열은 Arrays.deepToString 사용
String[][] str = {{"a"},{"b"}};
String[][] str2 = {{"a"},{"b"}};
System.out.println(Arrays.equals(str, str2)); // false 1차원 배열만 사용 가능
System.out.println(Arrays.deepEquals(str, str2)); // true 2차원(or 다차원) 배열은 Arrays.deepEquals사용
//배열의 복사
//Arrays.copyOf & Arrays.copyOfRange
int[] arr = {0,1,2,3,4,5};
int[] arr2 = Arrays.copyOf(arr, 3); // = 0,1,2 |0~3까지 복사
System.out.println(Arrays.toString(arr2));
int[] arr3 = Arrays.copyOfRange(arr, 1, 7);
System.out.println(Arrays.toString(arr3)); // = 1,2,3,4,5,0 (1부터 7까지라는 의미. 다만 arr변수는 6까지밖에 없으므로 7은 0으로 대체)
//배열의 정렬
//sort()
int[] Arr = {3,1,6,4,2};
Arrays.sort(Arr); // 먼저 Arrays.sort()로 정렬해주고
System.out.println(Arrays.toString(Arr)); //[1,2,3,4,5,6]
//Arrays.toString으로 출력
}
}
Arrays 연습문제
import java.util. Arrays;
public class Daily_Tstory {
public static void main(String[] args) {
//array에 담긴 모든 값 합산하기
int[] arr = {10,20,30,40,50};
int sum = 0;
for(int i=0; i<arr.length; i++) {
sum +=arr[i];
System.out.println(sum);
}
2차원 array의 모든 값의 총합과 평균을 구하기
int[][] arr = { {5,5,5,5,5},
{10,10,10,10,10},
{20,20,20,20,20},
{30,30,30,30,30}
};
int total = 0;
float ave = 0.0f;
int count = 0;
for(int i=0;i<arr.length;i++) {
for(int j=0; j<arr[i].length;j++) {
count++;
total += arr[i][j];
ave = total / (float)count;
System.out.print(total);
System.out.println(" "+(Math.round(ave*10)/10.0));
}
}
//1과 9사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램
int[] ball = {1,2,3,4,5,6,7,8,9};
int[] ball3 = new int [3];
for(int i = 0; i<ball.length; i++) {
int tem = (int)(Math.random()*ball.length);
int empty = 0;
empty = ball[0]; //빈 변수에 자리[0]값을 할당항
ball[0]=ball[tem];//자리[0]에 랜덤 값을 할당
ball[tem] = empty; // 랜덤변수에 미리 저장해놓은 자리[0]값을 재할당
System.out.println(Arrays.toString(ball));
}
//배열 ball 0~3의 자리수를 복사
ball3=Arrays.copyOf(ball, 3);
for(int j=0; j<3; j++) {
System.out.println(ball3[j]);
}
}
}
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바 학습 & 복습 9일차 - 객체 생성 & 사용 (0) | 2022.01.20 |
---|---|
자바 학습 & 복습 7일차 - array 배열 연습문제 (0) | 2022.01.17 |
자바 학습 & 복습 6일차 - array 배열 (0) | 2022.01.14 |
자바 학습 & 복습 5일차 (0) | 2022.01.13 |
자바 학습 & 복습 4일차 (0) | 2022.01.12 |