내 메서드는 세 개의 매개 변수를 사용합니다. a는 정수의 배열이며, low는 범위의 낮은 수이고 high는 높은 수입니다. 배열을 검색하여 숫자가 낮은 배열과 높은 배열을 찾은 다음 다른 배열에 추가하고 새 배열을 반환하려고합니다.배열에서 원치 않는 제로
초기 배열에 0이 포함되어 있지 않아도 항상 반환 할 배열은 0부터 시작합니다. 예를 들어, a = {7, 9} 인 경우 low가 5이고 high가 7 인 경우 b는 {0, 7, 9}입니다. 누군가 내가 잘못하고있는 것에 대해 조언을 해줄 수 있습니까?
public static int[] range(int[] a, int low, int high) {
int[] b = new int[0];
if (a == null || a.length == 0) {
throw new IllegalArgumentException();
}
else {
for (int i = 0; i < a.length; i++) {
if (a[i] >= low && a[i] <= high) {
b = Arrays.copyOf(b,
b.length + 1);
b[b.length - 1] = a[i];
}
}
}
return b;
}
이
내가 문제를 재현 할 수없는 그것을 실행할 때,@Test public void Selector_range_1() {
int[] a = {1, 9, 7, 5, 3};
int low = 1;
int high = 9;
int[] e = {1, 9, 7, 5, 3};
Assert.assertArrayEquals(e, Selector.range(a, low, high));
}
'range (new int [] {7,9}, 5, 7)'는'{7}'을 (를) 반환합니다. – Todd
이것은 잘 작동합니다 [데모] (http://ideone.com/TgFn1u). – dasblinkenlight
그 코드는'ArrayList'를 사용하면 더 간단 해지고 더 빨리 실행됩니다. –