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