我的方法有三个参数。 a是整数数组,low是范围内的低数字,high是高数字。我试图搜索数组以查找低和高之间的数字,将它们添加到另一个数组,然后返回新数组。
我返回的数组总是以零开始,即使初始数组中不包含零也是如此。例如,如果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));
}
答案 0 :(得分:0)
我认为您的代码没有任何问题,当我运行它时,我无法重现您的问题。我认为你的问题在于代码中的其他地方。也许你将结果保存在一个包含0的数组中。
public static void main(String[] args) {
int[] a = {7,9};
int[] b = range(a, 0,10);
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
}
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;
}