본문 바로가기
학습/IT

[IT] Java기초(10) - 자바에서 배열(Array) 실습하기, 배열 관련 API

by 개성공장 2021. 12. 23.
반응형

□ 배열 실습하기

 * 문제

 - 친구들의 숫자만큼 복불복 게임을 만들어봅니다.


 * 게임로직 -> 게임에 필요한 데이터 -> Pseudo code


---

import java.util.Arrays;
import java.util.Scanner;

public static void main(String[] args) {
// 친구들의 숫자 중에서 한 명이 당첨되게 하는 것
// 친구들은 각자 카드 하나를 갖고 있다고 생각
// 루프

// 필요한 데이터 : 카드
Scanner scanner = new Scanner(System.in);

// 몇 명이서 게임을 하실 건가요?
System.out.println("몇 명??");

// 입력받아서 몇 장의 카드로 만들기?
int cardNum = scanner.nextInt();
int[] cards = new int[cardNum];

// 당첨자 선정 : 0, 1, 2, 3, 4
int target = (int)(Math.random()*cards.length);
cards[target] = 1;

System.out.println("debug " + Arrays.toString(cards));

for (i=0; i < cards.length; i++;) {
	// 엔터를 누를 때마다 하나씩 넘어감
	scanner.nextLine();
	System.out.println(cards[i]);
	if(cards[i]==1) {
		System.out.println("당첨!");
		break;
	}
}
}

---

 

 

---

import java.util.Scanner;
import java.util.Arrays;

public class HelloWorld{

public static void main(String[] args) {

	Scanner scanner = new Scanner(System.in);

	System.out.println("How many people?");

	int cardNum = scanner.nextInt();
	int[] cards = new int[cardNum];

	int target = (int)(Math.random()*cards.length);
	cards[target] = 1;

	System.out.println("debug " + Arrays.toString(cards));

	for (int i=0; i < cards.length; i++) {
		System.out.println(cards[i]);
		if(cards[i]==1) {
			System.out.println("Nice");
			break;
		}
	}
}
}

---

 배열 관련 API

 * 배열 관련 API

- docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

- Arrays 클래스 : sort()

- Math.random() 과 배열의 크기

- System.arraycopy()

 

 * sort() 기능

 

 

---

import java.util.Arrays;

public class Sort {

public static void main(String[] args) {

	int[] arr = { 10, 9 , 8, 7, 6 };

	Arrays.sort(arr);

	System.out.println(Arrays.toString(arr));
}
}

---

=> [ 6, 7, 8, 9, 10 ], sort 함수는 배열을 정렬시키는 기능

 

 

 

 * 배열 확장

 - System.arraycopy(array1, 0, array2, 0, array1.length);

 - 배열 array1 위치 0부터 요소 array1.length개를 배열 array2 위치 0부터 요소 array1.length개를 복사

 

---

import java.util.Arrays;

public class ExtendArray {

public static void main(String[] args) {

	//arr1 에는 리모컨(포인터, 레퍼런스)가 들어감
	int[] arr1 = { 1, 2, 3 };

	int[] arr2 = new int[5];

	//arr2에 있는 레퍼런스를 복사해서 arr1에 담음
	arr1 = arr2;

	System.out.println(Arrays.toString(arr1));
}
}

---

=> [0, 0, 0, 0, 0]

 

 

---

//arr1에 있는 값을 arr2로 복사
arr2[0] = arr1[0];
arr2[1] = arr1[1];
arr2[2] = arr1[2];

//arr2에 있는 레퍼런스를 복사해서 arr1에 담음
arr1 = arr2;

System.out.println(Arrays.toString(arr1));

---

=> [ 1, 2, 3, 0, 0]

 

 

---

System.arraycopy(arr1, 0, arr2, 0, arr1.length);

System.out.println(Arrays.toString(arr2));

---

=> [ 1, 2, 3, 0, 0 ]

 

 

반응형

댓글