2014-03-28 3 views
2

나는 두 개의 int[] arrays을 가져 와서 하나의 것으로 연결하려고합니다. 나는 이미 여기에 꽤 많은 게시물이 있음을 알고 있습니다. 그러나 그들 모두는 익숙하지 않은보다 고급 스크립트 (System.arraycopy 등)를 사용하고 있습니다. 나는 그것들을 쉽게 사용할 수 있지만, 나는 왜 내가이 방법들을 사용하고 있는지 이해하지 못한다.2 개의 int 배열 연결하기

나의 계획은 내 배열을 모두 Strings (toString() 메서드 사용)으로 설정 한 다음 for loop으로 추적하는 것입니다. 정수가 발견 될 때마다, 원래 ""로 초기화 된 새로운 String의 끝에 출력합니다.

예 (라인 간격에 대한 분해)

배열 1 = [1, 2, 3, 4;

array2 = [5, 6, 7];

array3 = [1, 2, 3, 4, 5, 6, 7]; // 배열이 어떻게 생겼을 것입니다.

내 작업의이 부분을 수행하는 데 제안 된 방법에 대해 조언을 해 줄 수있는 사람이 있습니까?

+0

질문 헤더/제목에서'(학생)'을 삭제했습니다. 필요하지 않습니다. – Rahul

+0

왜 toString()을 사용합니까? 두 배열을 연결하거나 요소를 인쇄 하시겠습니까? – Juggernaut93

+0

실례합니다. 예, 배열을 결합한 후 인쇄하고 싶습니다. – Rivers31334

답변

3

여기에 문자열을 사용할 필요는 없습니다. 그냥 같은 새로운 배열을 얻을 :

int[] array3 = new int[array1.length + array2.length]; 

을 당신이 좋아하지 않는 경우에 지금 당신은 루프를 사용하여, 두 개의 배열을 복사 arraycopy를 사용하거나 할 수 있습니다. 이미 다른 곳에서 arraycopy을 사용하는 방법을 알고 계신 것 같습니다. 루프에 관해서는, 당신은 0에서 array30에서 array2.length 복사 array2에 실행 array1.length 복사 array3array1 및 다른 실행 두 개의 루프, 하나는 시작 array3에 인덱스 array1.length에서 시작 할 수 있습니다.

이후에 배열을 인쇄하려면

String를 사용할 필요가 없습니다 Arrays.toString()

3

사용합니다. 당신은 새로운 배열을 결합이 다른 사람의 크기를 할당하고 모든 값을 복사 그것으로 할 수 있습니다 물론

int[] array1 = ...; 
int[] array2 = ...; 
int[] result = new int[array1.length + array2.length]; 
for (int i = 0; i < array1.length; ++i) { 
    result[i] = array1[i]; 
} 
for (int i = 0; i < array2.length; ++i) { 
    result[array1.length + i] = array2[i]; 
} 

, 당신은보다 효율적으로 복사를 할 System.arrayCopy를 사용할 수 있지만 교장은 여전히 ​​의미합니다.

+0

환상적인 논리. 감사합니다. – Rivers31334

0

당신은 아파치 코 몬즈 랭 라이브러리를 사용하여 아파치 코 몬즈

int [] array1 = {1,2,3, 4}; 
int [] array2 = {5,6,7}; 
int [] array3 = ArrayUtils.addAll(array1, array2); 
0

에서 ArrayUtils을 사용할 수 있습니다

int[] array1 = { 1, 2, 3, 4, 5 }; 
int[] array2 = { 6, 7, 8, 9, 10 }; 

int[] array3 = ArrayUtils.addAll(array1, array2); 

http://commons.apache.org/proper/commons-lang/javadocs/api-

1

내장 된 메서드를 사용하지 않으려면 arraycopy을 수동으로 수행해야합니다. 크기가 arr1+arr2 인 세 번째 배열을 만든 다음 두 배열을 반복하여 내용을 arr3에 저장합니다. Like

int size = arr1.length + arr2.length; 
int indexval=0; 
int[] arr3 = new int[size]; 

for(int i=0;i<arr1.length;i++) 
{ 
arr3[i] = arr1[i]; 
indexval++; 
} 

for(int i=0,i<arr2.length;i++) 
{ 
    arr3[indexval] = arr2[i]; 
    indexval++; 
}