过去几个小时我一直在研究这个任务,我一直坚持最后一个方法所需的直方图,我有测试和代码问题(我使用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 ;,我的问题是编码本身是否出现问题,或者我错过了什么,与测试相同。
提前致谢。
答案 0 :(得分:0)
您只使用示例中的值测试您的方法。问题是你可能在考虑这个特定的例子的情况下写了这个方法。如果你试图制作一个不同长度的直方图,会发生什么?
您应该使用不同的数据和不同的参数编写更多测试,并检查它们是否全部通过。