자바
[자바] 배열의 활용
j9972
2022. 7. 1. 10:31
728x90
1차원 배열의 활용
1. 총합과 평균
class ex{
public static void main(String[] args) {
int sum = 0;
float avg = 0f;
int[] score = { 100, 88, 100, 100, 90};
for(int i = 0; i < score.length; i++ ) {
sum += score[i]
}
avg = sum / (float)score.length;
System.out.println("총점: " + sum);
System.out.println("평균: " + avg);
}
}
여기서 볼점은, avg가 float 타입이기 때문에 f를 써줬다는 점이랑 평균을 구할때 타입변환 해줬다는 점이다
2. 최대와 최소
class ex{
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 = 0; 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);
}
}
여기서 볼점은 배열의 첫번째 값을 최대, 최소로 초기화를 했다는 점이다.
3. 셔플
class ex{
public static void main(String[] args) {
int[] arr = new int[10];
for(int i = 0; i < arr.length; i++ ) {
arr[i] = i; // 배열을 0-9로 초기화
System.out.print(arr[i]); // 순차적으로 배열이 출력된다
}
System.out.println();
for(int i = 0; i < arr.length; i++) {
int n = (int)(Math.random() * 10 ); // 랜덤으로 숫자 생성
int tmp = arr[i];
arr[i] = arr[n]
arr[n] = tmp; // 셔플
}
for (int i = 0; i < arr.length; i++ )
System.out.println(arr[i]) // 셔플된 배열을 출력
}
}
여기서 볼점은, 배열에 처음에 중복된 값이 없기때문에, 셔플시에 중복에 대한 걱정을 하지 않아도 된다.
3-1. 셔플로 로또 만들기
class ex{
public static void main(String[] args) {
int[] ball = new int[45];
for(int i = 0; i < ball.length; i++ ) {
ball[i] = i+1; // 배열을 1-45로 초기화
}
int temp = 0;
int j = 0;
for(int i = 0; i < 6; i++) { // 6개만 바꾸는 이유는 로또 번호는 6개이므로
j = (int)(Math.random() * 45 ); // 랜덤으로 숫자 생성
temp = ball[i];
ball[i] = ball[j]
ball[j] = temp; // 셔플
}
for (int i = 0; i < 6; i++ )
System.out.printf("ball[%d] = %d %n", i, ball[i]); // 셔플된 배열을 출력
}
}
4. 임의의 값으로 배열 채우기
import java.util.*;
class ex{
public static void main(String[] args) {
int[] code = { -4, -4, -1, -1, 3, 6 ,3 ,3, 11, 3};
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)); // 불연속적인 임의의 값이 나온다
}
}
여기서 볼점은, 0부터 code의 길이만큼 랜덤숫자를 생성하고 code 배열에서 임의로 숫자를 받아서 arr에 복사한다는 점, Arrays.toString(배열) 은 배열의 값이 나오고, Arrays.toString() 은 배열의 주소값이 나온다는 점이다.
5. 빈도수
class Ex {
public static void main(String[] args) {
int[] num = new int[10];
int[] counter = new int[10];
for(int i =0; i < num.length; i++) {
num[i] = (int)(Math.random() * 10);
System.out.print(num[i]);
}
System.out.println();
for(int i = 0; i < num.length; i++) {
counter[arr[i]]++; // 이 부분이 빈도수를 체크해준다
}
for(int i = 0; i < arr.length; i++ ) {
System.out.println( i + "의 개수 :" + counter[i]);
}
}
}
여기서는 counter[arr[i]]++; 이 부분만 보면 되는데, 인덱스의 위치를 찾아와서 빈도수를 하나씩 증가 시켜주면된다
String 배열의 활용
1. 16진수 2진수로 바꾸기
class ex {
public static void main(String[] args) {
char[] hex = { 'C','A','F','E' );
String[] binary = { "0000", "0001", "0010", "0011",
"0100", "0101", "0110", "0111",
"1100", "1101", "1110", "1111" }
Sring res= "";
for(int i = 0; i < hex.length; i++ ) {
if(hex[i] >= '0' && hex[i] <= '9' ) {
res += binary[hex[i] - '0' ];
} else {
res += binary[hex[i] - 'A' + 10 ];
}
}
System.out.print;ln("hex : " + new String(hex));
System.out.print;ln("binary : " + res);
}
}
여기서 볼 점은, hex의 범위가 10이상일때와 아닐때 처리하는 방법을 보면 된다
다차원 배열의 활용
1. 단어 맞추기
import java.util.*;
class ex {
public stati void main(String[] args) {
String[][] words = ( {"chair", "의자" }, // word[0][0], word[0][1]
{"computer", "컴퓨터"}, // word[1][0], word[1][1]
{"integer", "정수"} } // word[2][0], word[2][1]
Scanner scanner = new Scanner(System.in);
for(int i = 0; i < words.length; i++) {
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", word[i][1] );
}
}
}
}