2016-07-29 19 views
0

Schreiben Sie die Methode middle(), die ein Array int[] a übernimmt und ein neues Array zurückgibt, das das mittlere Drittel von a enthält. Angenommen, die Länge von a ist ein Vielfaches von 3. ZB: middle({1,2,3,4,5,6}) sollte {3,4} und middle({40,50,60,70,80,90} sollte {60,70} zurückgeben.Ich möchte das mittlere Drittel eines Arrays zurückgeben a

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; 
    } 
} 

Wenn ich versuche, den obigen Code zu testen, gibt es keine mittleren Ganzzahlen zurück. screenshot

+1

so was zurückgegeben wird? Wie nennst du diesen Code? –

+1

Was wird stattdessen zurückgegeben? Der Screenshot zeigt nur, dass es ein Array von ganzen Zahlen zurückgibt, aber Sie zeigen nicht, was innerhalb des Arrays ist. Wenn ich auf deinen Code schaue, sehe ich keine offensichtlichen Probleme. –

+0

Ihr Code funktioniert einwandfrei, die BlueJ IDE, die Sie verwenden, ist verwirrend. Es gibt tatsächlich das mittlere Integer-Objekt zurück, das vom Typ 'int [] 'ist. Ich weiß nicht, wie BlueJ funktioniert, aber versuche diesen Code * vor * die Zeile 'return mid;': 'für (int i = 0; i davedwards

Antwort

-2

Überprüfen Sie diesen Code und die Kommentare sorgfältig

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] + " "); 

    } 

Um es ein Verfahren zu verstehen, lesen

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

Wie beantwortet das die Frage? Das OP hat bereits einen Arbeitscode gepostet. Und dieser Code funktioniert nicht, da Sie das mittlere Drittel des Arrays zurückgeben sollen, nicht die mittlere ein oder zwei Zahlen. –

+1

Wie wird das die akzeptierte Antwort? –