[[-6, 3, 9], [-7, 2, 9], [-3, 2, 5], ... , [3, 4, 1]]
사용중인 배열은 위와 같은 구조입니다.Java에서 배열의 부분 복사본
내 목표는 이전에 결정된 특정 위치를 기준으로이 배열을 나누는 것입니다.
나는 Arrays.copyOf
, Arrays.copyOfRange
및 System.arraycopy
을 시도했으나 성공을 거두지 못했습니다. 그래서 나는 이것을 위해 내 자신의 방법을 썼습니다. 그것은 또한 작동하지 않았다.
partitionResult
arrayOfVals
arrayOfVals
같은 구조 유형 int
의 인스턴스 (변수) 배열 단지 일부만을 복사 내 의도에도 불구하고 전체 partitionResult
배열로 초기화 될 것입니다. 테스트 한 결과 (System.out.println (partitionResult[begin+i][j])
) 원하는 값이 인쇄됩니다.
private int[][] copyArray(int begin, int end)
{
int SUBARRAY_SIZE = 2;
// below the '+1' is due to zero-indexing
int[][] arrayOfVals = new int[end-begin+1][SUBARRAY_SIZE+1];
end -= begin;
for (int i = 0; i <= end; i++) {
for (int j = 0; j <= SUBARRAY_SIZE; j++) {
arrayOfVals[begin][j] = partitionResult[begin+i][j];
}
}
return arrayOfVals;
}
원하는대로 다음 작업을 수행 할 수없는 이유는 무엇입니까?
private void foo(int begin)
{
int[][] arrayOne = copyArray(0, begin);
int[][] arrayTwo = copyArray(begin+1, partitionResult.length -1);
...
}
편집 :
[[-6, 3, 9], [-7, 2, 9], [-3, 2, 5], [3, 4, 1], [0, 5, 5], [2, 3, 1], [3, 4, 1]]
이 내 시험 배열입니다. 정의 된 위치 begin
에서 copyArray
메서드를 사용하여이 배열을 분할하고 싶습니다.
복사하고자하는 값을 인쇄 할 때 partitionResult[begin+i][j]
일 때 결과는 그대로 유지됩니다. 그러나, 최종 arrayOfVals
표시 - 출력 내가 무엇을 인쇄되지 않습니다, 전체 partitionResult
배열입니다.
[[-6, 3, 9], [-7, 2, 9], [-3, 2, 5]]
및 arrayTwo
이 [[3, 4, 1], [0, 5, 5], [2, 3, 1], [3, 4, 1]]
Edit2가 동일하게 동일하게 arrayOne
원하는 : 문제 아니었다 방법 copyArray
으로하지만, 다른 방법으로. 내가 쓴 toString
메서드는 전달 된 배열이 아닌 partitionResult
인스턴스 변수에서 사용하는 값을 표시하는 것이므로 아무 것도 복사되지 않는 것처럼 보입니다. 그 실수는 분명 나에게 분명했다. 나는 그 충고에 크게 감사한다.
@Andrea에서 하나의 작은 버그가 발견되었습니다. 새로 생성 된 어레이는 0의 값을 삽입하기 시작하기 때문에
을 자신의 방법은 당신이 개념적인 문제를 가지고 추측에는 요 작동하지 않는 경우 다음과 같이 1]]
우리는 설정 귀하의 예제 데이터를 나타낼 수 있습니다. –
예상되는 출력을 가진 샘플 입력이 있습니까? 내가 해결하려고하는 문제를 잘 모르겠다. –
질문을 업데이트했습니다. 감사합니다. 만약 내가 그것을 정확하게 이해한다면, 당신은 배열의 일부분의 사본을 원하는 것처럼 보일뿐입니다. 그렇게 간단해야합니다. 요청 된 요소 범위를 잡고 결과에 넣기 전에 복제하십시오. –