-
[자바] 배열의 활용자바 2022. 7. 1. 10:31728x90
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] ); } } } }
'자바' 카테고리의 다른 글
[자바] 객체지향(2) - 1 ( 패키지 ) (0) 2022.07.09 [자바] 객체지향(1) (0) 2022.07.07 [자바] 배열 (0) 2022.06.28 [자바] JDK1.5 이후 향상된 for문 (0) 2022.06.27 [자바] 변수 (0) 2022.06.25