2014-10-16 68 views
0

我目前正在對有關Java接口的分配和我的卡在那裏不知道這裏的具體問題的最後2個步驟是我寫的Java接口代碼錯誤?

@Override  
    public boolean isNonDescending() {    
    double smallestElement = data[0];  
    for (int i = 0; i < data.length;) {  
     if (data[i] >= smallestElement) {  
     i++;   
     }  
    } 
    return true;   
    } 

的代碼,但是當我提出我的工作WebCat ,它說這個特定的方法是行不通的,因爲它該做的,它應該做的主要事情是:

isNonDescending:返回指示是否元素集合 是從最小的組織最大的一個布爾值(相等的元素相鄰)。換言之,如果在較大的元素之後沒有更小的元素,則一組元素是不下降的。例如,(1,2,3,4,5)不下降,而 (1,2,3,1,5)不是,因爲更小的元素(1)出現在較大的元素)。

這是在方法IsNonDescending提到smallestElement如果你需要它的另一種方法:

@Override  
    public double smallestElement() {  
    double minElement = data[0];  
    for (int i = 1; i < data.length; i++) {  
     if (data[i] < minElement) { 
     minElement = data[i]; 
     }  
    }  
    return minElement;  
    } 

我的問題是其中我失去了一個錯誤代碼或線路的東西嗎?

在此先感謝

+0

您如何檢查數組是否在上升?你檢查每個元素是否大於或等於前一個元素,對嗎?然後在你的代碼中這樣做。請注意,如果該方法命名爲「isAscending()」,而不是「isNonDescending()」,則會更清晰。 – 2014-10-16 11:48:24

+0

我不知道你在'isNonDescending'中試圖做什麼你應該檢查下一個元素是否大於當前元素,如果是,那麼返回true,否則如果沒有找到然後返回false – EpicPandaForce 2014-10-16 11:49:21

+1

你的第一個例子中的方法總是返回'true'。你應該添加一個'else'case女巫返回'false' – Jens 2014-10-16 11:50:24

回答

0

讓我們想象一下我運行下面的陣列上的isNonDescending方法:[ 1,2,0]

if測試將是錯誤的,第一個元素,所以i將永遠不會被遞增,你會有一個無限循環。另外,你永遠不會在你的方法中返回false。你應該這樣做來解決它:

@Override  
public boolean isNonDescending() {  
    // starting at 1 since we will be looking at data[i-1], which 
    // must start at 0. Alternatively, you can write 
    // for (int i=0 ; i < data.length - 1 ; i++) and work with data[i+1] 
    for (int i = 1 ; i < data.length ; i++)  
     if (data[i] > data[i-1]) return true; 
    return false;   
} 
+1

這不會爲{3,2,1,2}提供正確的結果。它返回false,即使{3,2,1,2}不是一個降序的數組。 – 2014-10-16 12:07:04

0
public static boolean isNonDescending() {    
    for (int i = 1; i < data.length-1; i++) {  
    if (data[i-1] > data[i]) {  
     return false; 
    }  
    } 
    return true;   
} 

但我想它命名爲isAscending(),nonDescending()不正確地描述你的榜樣。

+0

*升序**不是**非降序*相反。另外,你的不平等是錯誤的。 – Dici 2014-10-16 11:59:49

+0

我沒有說過。我正在編寫代碼來傳遞OP的示例,而不是實現方法的名稱。 – mekondelta 2014-10-16 12:31:31

0

我認爲這是你在找什麼:

@Override 
    public static boolean isNonDescending() { 
     boolean success = true; 
     for (int i = 1; i < data.length - 1; i++) { 
      if (data[i - 1] > data[i]) { 
       success = false; 
      } 
     } 
     return success; 
    } 

希望它能幫助。

克萊門西奧莫拉萊斯盧卡斯。

+0

'data.length - 1'應該是'data.length'。除此之外,它可以工作,但是你循環遍歷整個數組,而你可以在第一次失敗的測試中返回。如果你確實需要一個'return'語句,添加'i Dici 2014-10-16 12:12:32