Java接口测试和编码问题

时间:2014-10-16 13:18:03

标签: java arrays

过去几个小时我一直在研究这个任务,我一直坚持最后一个方法所需的直方图,我有测试和代码问题(我使用NetBeans)

该方法应该这样做> 直方图:取正数n表示其中的分割数 数据的范围被划分,并返回长度为n的整数数组,其中 数组的每个元素都包含落入此元素的元素的数量 师。例如,如果数据是(0.5,1.2,2.4,9.8,5.1,10.5),则其跨度为 10.0(从0.5到10.5)。 histogram(4)将此范围划分为四个部分: 0.5-3.0,3.0-5.5,5.5-8.0和8.0-10.5。检查数据,我们看到3个值 落入第一个段,第二个值为1,第三个值为0,值为2 在第四个。因此,返回的值是一个长度为4的数组,其中包含 按顺序排列的值(3,1,0,2)。 请注意,返回数组中元素的总和等于 数据数组中的元素。

这是代码:

  @Override     
  public int[] histogram(int divisions) {       
    int[] wide = new int[divisions];        
    double segment = span() / divisions;        
    for (int i = 0; i < data.length; i++) {     
      if (data[i] <= (smallestElement() + segment)) {   
        wide[0] = wide[0]+ 1;   
      } else if (data[i] <= (smallestElement() + (2 * segment))) {      
        wide[1] = wide[1]+ 1;   
      } else if (data[i] <= (smallestElement() + (3 * segment))) {      
        wide[2] = wide[2]+ 1;   
      } else if (data[i] <= (smallestElement() + (4 * segment))) {
        wide[3] = wide[3]+ 1;       
      }     
    }       
    return wide;        
  }

以下是上述方法的测试:

   @Test        
   public void testHistogram() {        
     double[] data = new double[3];     
     data = new double[]{0.5, 1.2, 2.4, 9.8, 5.1, 10.5};        
     int[] data2 = new int[4];      
     data2 = new int[]{3, 1, 0, 2};     
     DoubleArrayStatisticalOutcomes a = new DoubleArrayStatisticalOutcomes(data);       
     assertArrayEquals(data2, a.histogram(4));      
   }    

我使用WebCat提交我的作品,当我提交作业时,它告诉我该方法缺少一些测试加上这个&#34;直方图不能解释正确的元素数量&#34 ;,我的问题是编码本身是否出现问题,或者我错过了什么,与测试相同。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您只使用示例中的值测试您的方法。问题是你可能在考虑这个特定的例子的情况下写了这个方法。如果你试图制作一个不同长度的直方图,会发生什么?

您应该使用不同的数据和不同的参数编写更多测试,并检查它们是否全部通过。