Java

[Java] 배열의 활용

gorusair 2022. 1. 3. 23:21
public class ArrayEx5 {
	public static void main(String[] args) {
		int sum = 0; // 총점을 저장하기 위한 변수
		float average =0f; //평균을 저장하기 위한 변수
		
		int [] score = {100, 88, 100, 100, 90};
		
		for(int i =0; i< score.length; i++) {
			sum+= score[i];    //반복문을 이용해서 배열에 저장되어 있는 값들을 모두 더한다.
		}
		
		average = sum / (float)score.length; //계산결과를 float로 얻기위해서 형변환
		
		System.out.println("총점:" + sum);
		System.out.println("평균: "+ average);
	}

}
총점:478
평균: 95.6


public class ArrayEx6 {
	public static void main(String[] args) {
		int [] score = { 79, 88, 91, 33, 100, 55, 95};
		
		int max = score[0]; //배열의 첫 번쨰 값으로 최대값을 초기화 한다.
		int min = score[0]; //배열의 첫 번쨰 값으로 최소값을 초기화 한다.
		
		for(int i=1 ; i < score.length; i++) {
			if(score[i] > max) {
				max = score[i];
			} else if(score[i] <min) {
				min = score[i];
			}
		}
		
		System.out.println("최대값:" + max);
		System.out.println("최소값:" + min);
		
	}

}
최대값:100
최소값:33
public class ArrayEx7 {
	public static void main(String[] args) {
		int[] numArr = new int[10];
		
		for(int i =0; i <numArr.length; i++) {
			numArr[i]= i; //배열을 0~9의 숫자로 초기화한다.
			System.out.print(numArr[i]);
		}
		System.out.println();
		
		for(int i =0; i<100; i++) {
			int n = (int)(Math.random() *10); // 0~9중의 한 값을 임의로 얻는다.
			int tmp = numArr[0];
			numArr[0] = numArr[n];
			numArr[n] = tmp;
		}
		
		for(int i=0; i<numArr.length; i++)
			System.out.println(numArr[i]);
	}
}
0123456789
2
1
8
9
3
7
0
4
6
5

public class ArrayEx8 {
	public static void main(String[] args) {
		int[] ball = new int[45]; //45개의 정수값을 저장하기 위한 배열 생성
		
		//배열의 각 요소에 1~45의 값을 저장한다.
		for(int i=0; i<ball.length; i++)
			ball[i] = i+1;	//ball[0]에 1이 저장된다.
		
		int temp = 0; //두 값을 바꾸는데 사용할 임시변수
		int j = 0; //임의의 값을 얻어서 저장할 변수
		
		//배열의 i번쨰 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다.
		//0번쨰 부터 5번쨰 요소까지 모두 6개만 바꾼다.
		for(int i=0; i<6; i++) {
			j = (int)(Math.random() * 45); //0~44 범위의 임의의 값을 얻는다.
			temp = ball[i];
			ball[i] = ball[j];
			ball[j] = temp;
		}
		// 배열  ball 앞에서 부터 6개의 요소를 출력한다.
		for(int i =0; i<6; i++)
			System.out.printf("ball[%d] =%d%n", i, ball[i]);
	}

}

ball[0] =4
ball[1] =7
ball[2] =44
ball[3] =21
ball[4] =38
ball[5] =3
import java.util.*;
public class ArrayEx9 {
	public static void main(String[] args) {
		int [] code = {-4, -1,3,6,11}; // 불연속적인 값들로 구성된 배열
		int[] arr = new int[10];
		
		for(int i=0; i <arr.length; i++) {
			int tmp = (int)(Math.random() * code.length);
			arr[i] = code[tmp];
		
		}
		System.out.println(Arrays.toString(arr));
	}

}
[11, 3, 11, 6, 6, -4, -4, -4, -1, 6]
public class ArrayEx10 {
	public static void main(String[] args) {
		int[] numArr = new int[10];
		
		for(int i=0; i <numArr.length; i++) {
			System.out.print(numArr[i] = (int)(Math.random() *10));
		}
		System.out.println();
		
		for(int i=0; i < numArr.length-1; i++) {
			boolean changed = false; //자리 바꿈이 발생했는지 체크한다.
			
			for(int j=0; j< numArr.length-1-i ;j++) {
				if(numArr[j] >numArr[j+1]) {//옆에 갚이 작으면 서로 바꾼다.
					int temp = numArr[j];
					numArr[j] =numArr[j+1];
					numArr[j+1] = temp;
					changed = true; //자리 바꿈이 발생했으니 changed를 true로.
				}
			} // end for j
			
			if(!changed) break; // 자리바꿈이 없으면 반복문을 벗어난다.
			
			for(int k=0; k<numArr.length;k++)
				System.out.print(numArr[k]); // 정렬된 결과를 출력한다.
			System.out.println();
		}// end for i
	} // main 끝
}
public class ArrayEx11 {
	public static void main(String[] args) {
		int[] numArr = new int[10];
		int[] counter = new int[10];
		
		for(int i=0; i< numArr.length; i++) {
			numArr[i] =(int)(Math.random()*10);
			System.out.print(numArr[i]);
		}
		System.out.println();
		
		for(int i=0; i <numArr.length; i++) {
			counter[numArr[i]]++;
		}
		
		for(int i=0; i < numArr.length; i++) {
			System.out.println(i +"의 개수 :"+counter[i]);
		}
	}

}

3543504340
0의 개수 :2
1의 개수 :0
2의 개수 :0
3의 개수 :3
4의 개수 :3
5의 개수 :2
6의 개수 :0
7의 개수 :0
8의 개수 :0
9의 개수 :0

String 배열

string 배열의 선언과 생성

배열의 타입이 String인 경우에도 int배열의 선언과 생성방법은 다르지 않다.

 

// 3개의 문자열을 담을 수 있는 배열을 생성한다.
String[] name = new String[3];

String 배열의 초기화

초기화 역시 int배열과 동일한 방법으로 한다.

String[] name = new String[3]; //길이가 3인 String 배열을 생성
name[0] = "Kim";
name[1] = "Park";
name[2] = "Yi";

String[] name = new String[]{"Kim","Park,"Yi"};
String[] name = {"Kim","Park","Yi"}; // new String을 생략할수 있음
public class ArrayEx12 {
	public static void main(String[] args) {
		String[] names = {"Kim", "Park", "Yi"};
		
		for(int i =0; i< names.length;i++)
			System.out.println("names["+i+"]:"+names[i]);
		
		String tmp = names[2]; //배열 names의  세번쨰요소를 tmp에 저장
		System.out.println("tmp:"+tmp);
		names[0] ="Yu"; // 배열 names의 첫번쨰 요소를 "Yu"로 변경
		
		for(String str : names) //향상된 for문
			System.out.println(str);
	}

}
names[0]:Kim
names[1]:Park
names[2]:Yi
tmp:Yi
Yu
Park
Yi
public class ArrayEx13 {
	public static void main(String[] args) {
		char[] hex = {'C', 'A', 'F', 'E'};
		
		String[] binary = { "0000", "0001", "0010", "0011"
							,"0100", "0101", "0110", "0111"
							,"1000", "1001", "1010", "1011"
							,"1100", "1101", "1110", "1111"};
		String result ="";
		
		for(int i =0; i <hex.length; i++) {
			if(hex[i]>='0' && hex[i] <='9') {
				result +=binary[hex[i]-'0'];   //'8' - '0'의 결과는 8이다.
			} else { //A~F이면
				result +=binary[hex[i]-'A'+10]; //'C'-'A'의 결과는 2
			}
		}
		
		System.out.println("hex:"+ new String(hex));
		System.out.println("binary:"+result);
	}

}

hex:CAFE
binary:1100101011111110

 

 

♤ char배열과 String 클래스의 변환

 

public class ArrayEx14 {
	public static void main(String[] args) {
		String src ="ABCDE";
		
		for(int i=0; i<src.length(); i++) {
			char ch = src.charAt(i); //src의 i번쨰 문자를 ch저장
			System.out.println("src.charAt("+i+"):"+ch);
		}
		
		//String을 char[] 로 변환
		char[] chArr =src.toCharArray();
	
		//char로 배열(char[]) 을 출력
		System.out.println(chArr);
	}

}
src.charAt(0):A
src.charAt(1):B
src.charAt(2):C
src.charAt(3):D
src.charAt(4):E
ABCDE

다차원 배열

2차원 배열의 선언과 인덱스

선언방법 선언 예
타입[ ][ ] 변수이름; int[ ][ ] score;
타입 변수이름[ ][ ] int score[ ][ ];
타입[ ] 변수이름[ ] ; int[ ] score[ ];

 

2차원 배열의 초기화

int[][] arr = new int[][] {{1, 2, 3}, {4, 5, 6} };
int[][] arr = {{1, 2, 3}, {4, 5, 6} };
package ch05;

public class ArrayEx18 {
	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++)	{
			for(int j=0; j<score[i].length;j++) {
				System.out.printf("score[%d][%d]=%d%n", i,j,score[i][j]);
			}
		}
		for(int[] tmp : score) {
			for(int i :tmp) {
				sum+=i;
			}
			
			System.out.println("sum="+sum);
		}
	}

}
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=300
sum=360
sum=450
sum=570