1. 1~9 사이의 중복되지 않는 숫자로 이루어진 3자리 숫자를 만드는 프로그램을 작성하라
단, Math.random()을 사용했기 때문에 실행결과와 다를 수 있다.
int[] ballarr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] ball3 = new int[3]
[결과]
486
[풀이]
public class practice5_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] ballarr = {1,2,3,4,5,6,7,8,9};
int[] ball3 = new int[3];
for(int i = 0; i < ballarr.length; i++) {
int j = (int) (Math.random()*ballarr.length);
int tmp = 0;
tmp = ballarr[i];// 랜덤값의 중복값을 없애기 위한 과정을 위해 필요한 변수입니다.
ballarr[i] = ballarr[j];
ballarr[j] = tmp;
}
//System.arraycopy(src(원배열), srcpos(복사할시작지점), dest(복사값이동배열), destPos(복사받을시작지점), length(길이));
System.arraycopy(ballarr,0,ball3,0,3);
for (int i = 0; i < ball3.length; i++) { // 배열 출력
System.out.print(ball3[i]);
}
/* arraycopy를 쓰지 않고 배열을 출력하는 법도 있습니다.
직접 ball3[]에 ballarr[]의 값을 하나하나 입력해주는 것입니다.
앞서서 for문에서 이미 랜덤한 값으로 바뀌었기에 이렇게 해줘도 무방합니다.
ball3[0] = ballarr[2];
ball3[1] = ballarr[3];
ball3[2] = ballarr[4];
for문을 이용해서 입력할 수도 있습니다.
for(int i = 0; i<ball3.length;i++){ball3[i] = ballarr[i+2];} */
}
}
*arraycopy 사용방법입니다.
//System.arraycopy(src(원배열), srcpos(복사할시작지점), dest(복사값이동배열), destPos(복사받을시작지점), length(길이));
배열안의 값들을 다른 배열 안에 복사하는 방법입니다.
이 방식이 마음에 들지 않거나 혹은 더 확실한 방법을 찾는다면 이 글을 읽어보시는 것을 추천합니다.
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
<Java>자바의 정석 5장 13번 toCharArray(), 단어 위치섞기 (0) | 2021.07.02 |
---|---|
<Java> 동전으로 거스름돈 지불하기 (0) | 2021.07.01 |
<java> 배열의 합과 평균 (0) | 2021.06.30 |
명품 Java progamming 3장 실습문제 11 ~16 해답 (0) | 2021.06.29 |
명품 JAVA 3장 실습문제 2번 - 10번까지 해답 (0) | 2021.06.27 |