数组中不需要的零

时间:2015-01-25 22:55:06

标签: java arrays

我的方法有三个参数。 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));
}

1 个答案:

答案 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;
    }