2016-07-29 29 views
0

編寫方法middle()需要一個數組int[] a並返回一個新的數組,其中包含a的中間三分之一。假設a的長度爲3的倍數。例如:middle({1,2,3,4,5,6})應返回{3,4}middle({40,50,60,70,80,90}應爲{60,70}我想返回一個數組的中間三分之一

public class middle { 
    public static int[] middle(int[] a) { 
     int newLen = a.length/3; 
     int[] mid = new int[newLen]; 
     for (int i = 0; i < mid.length; i++) { 
     mid[i] = a[newLen+i]; 
     } 
     return mid; 
    } 
} 

當我嘗試測試上述代碼時,它不返回中間整數。 screenshot

+1

?你怎麼調用這個代碼? –

+1

什麼是退回?屏幕截圖僅顯示它正在返回一個整數數組,但不顯示數組內部的內容。看看你的代碼,我沒有看到任何明顯的問題。 –

+0

你的代碼工作正常,它是你使用的BlueJ IDE,令人困惑。它確實返回了中間整數Object,它是'int []'類型的。我不知道BlueJ是如何工作的,但是嘗試在* return line的前面放置這段代碼*:for(int i = 0; i davedwards

回答

-2

檢查這個代碼並閱讀註釋仔細瞭解

int[] a = { 40, 50, 60, 70, 80}; 
    int newLen = (a.length- 1)/2; 

    int mid[]; 
    if (a.length % 2 == 0) {// checking for even number 
     mid = new int[2];// if even number there must be two middle number 

     mid[0] = a[newLen]; // taking first middle number 
     newLen++; 
     mid[1] = a[newLen]; // taking second middle number 
    } else {// for odd number 
     mid = new int[1];// one middle number 
     mid[0] = a[newLen]; 
    } 

    for (int i = 0; i < mid.length; i++) { 
     System.out.print(mid[i] + " "); 

    } 

要使它成爲一個方法,以便返回什麼

public static int[] middle(int[] a) { 
    int newLen = (a.length- 1)/2; 

    int mid[]; 
    if (a.length % 2 == 0) {// checking for even number 
     mid = new int[2];// if even number there must be two middle number 

     mid[0] = a[newLen]; // taking first middle number 
     newLen++; 
     mid[1] = a[newLen]; // taking second middle number 
    } else {// for odd number 
     mid = new int[1];// one middle number 
     mid[0] = a[newLen]; 
    } 
    return mid; 
} 
+0

這是如何回答這個問題的? OP已經發布了工作代碼。而這個代碼不起作用,因爲你應該返回數組的中間三分之一,而不是中間的一個或兩個數字。 –

+1

這是如何成爲公認的答案? –

相關問題