在过去的几个小时里,我一直在做这个任务,我被困在了分配所需的最后一个方法直方图上,我在测试和代码方面有问题(我正在使用NetBeans)。
该方法应该执行此>直方图:获取一个正数n,表示数据跨度被分割的除数,并返回长度为n的整数数组,其中数组的每个元素都包含属于此除法的元素的计数。例如,如果数据为(0.5、1.2、2.4、9.8、5.1、10.5),则其跨度为10.0 (从0.5到10.5)。直方图(4)将这一范围分为四个部分:0.5-3.0、3.0-5.5、5.5-8.0和8.0-10.5.对数据进行检查,发现第一段中有3个值,第二个段中有一个值,第三个段中有一个值,第四个段中有两个值。因此,返回的值是一个长度为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提交我的工作,当我提交作业时,它告诉我该方法缺少一些测试,再加上“直方图没有计算正确的元素数”,我的问题是编码本身是否会出现问题,还是我遗漏了什么,与测试一样。
提前谢谢。
发布于 2014-10-16 13:46:25
您只使用示例中的值测试您的方法。问题是,您编写方法时可能考虑到了这个特定的例子。如果你试着做一个不同长度的直方图,会发生什么?
您应该用不同的数据和参数编写更多的测试,并检查它们是否都通过了。
https://stackoverflow.com/questions/26405495
复制相似问题