Мой метод принимает три параметра. a - массив целых чисел, low - это низкое число в диапазоне, а высокое - большое число. Я пытаюсь выполнить поиск по массиву, чтобы найти числа между низким и высоким, добавить их в другой массив и вернуть новый массив.Нежелательный нуль в массиве
Массив, который я возвращаю, всегда начинается с нуля, даже если ноль не включен в начальный массив. Например, если a = {7, 9}, при низком уровне 5 и максимуме 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
Это работает отлично [demo] (http://ideone.com/TgFn1u). – dasblinkenlight
Этот код будет проще и работает намного быстрее, с 'ArrayList'. –