2014-10-16 82 views
0

我一直在做這個任務的過去幾個小時,我被困在最後一個方法直方圖所需的任務,我有測試和代碼可能存在問題(我正在使用NetBeans的)。Java接口測試和編碼問題

該方法應該這樣做> 直方圖:取正數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個值 ,第二個中有1個值,第三個中有0個值,第二個值是 。因此,返回的值是一個包含 值(3,1,0,2)的長度爲4的數組。 請注意,返回數組中元素的總數等於數據數組中元素的數目 。

這裏是代碼:

@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提交我的工作,當我提交作業它告訴我這個方法還有一些測試失敗,再加上這個「直方圖沒有考慮到正確的元素數量」,我的問題是這個問題是否出現在編碼本身,還是我缺少一些東西,與測試相同。

在此先感謝。

+0

我認爲在提交作品後解釋你收到的信息必須是作業的一部分。 「缺少一些測試」可能意味着你沒有[用測試覆蓋你所有的代碼](http://en.wikipedia.org/wiki/Code_coverage)。另一條消息應該是自我解釋的! – ericbn 2014-10-16 13:45:51

回答

0

你只用示例中的值來測試你的方法。問題在於,你可能在考慮這個特定的例子的時候寫了這個方法。如果您嘗試製作不同長度的直方圖會發生什麼?

你應該用不同的數據和不同的參數編寫更多的測試,並檢查它們是否全部通過。