Java array middle ausgeben?
Hallo zusammen!
Ich bin gerade an einer Aufgabe und scheitere, die mittleren beiden Werte eines Arrays auszugeben. Mit gibt es immer nur die ersten beiden Werte aus!
Mein Code:
public int[] makeMiddle(int[] nums) {
int counter = 0;
int mid = (counter / 2);
int midnext = (counter / 2) + 1;
int valuemid = nums[mid];
int valuenext = nums[midnext];
int[] result = new int[2];
result[0] = valuemid;
result[1] = valuenext;
for (int i = 0; i<nums.length;i++) {
counter ++;
}
return result;
}
Ich hoffe jemand kann mich über meinen Fehler aufklären! Liegt am counter...
Grüsse und noch einen schönen Abend!!!
2 Antworten
Wie sollte dir das auch etwas anderes ausgeben als die ersten beiden Werte?
Du setzt result[0] und result[1] konstant auf nums[0] und nums[1];
Außerdem möchte ich anmerken, dass nicht jeder Array zwei mittlere Werte hat, sondern nur Arrays mit gerader Elemntzahl.
Der Fehler liegt vermutlich darin, dass du "counter" auf 0 setzt. Wäre counter = nums.length, dann hättest du schon fast das richtige Ergebniss(du müsstest von mid und midnext noch 1 abziehen, um die korrekten Werte zu bekommen.)
Pass aber auf mit invaliden Eingaben, also solchen mit Länge = 0.
Was soll es bringen Counter am Ende noch zu erhöhen?
Du fängst an mit counter=0. Davon die Hälfte ist 0. Also ist mid=0 und midnext=1.
Deshalb bekommst du immer die ersten zwei Elemente deines Arrays. Du musst Counter einen sinnvollen Wert zuweisen bevor du damit arbeitest. Danach bringt es nichts mehr.
Also musst du deine for-Schleife nach oben ziehen zwischen int counter = ...
und int mid = ... oder du nimmst direkt int counter = nums.length;
Warum setzte ich denn den neuen array konstant auf nuns[0] und nums [1]? Wo liegt der Fehler?
Ah ja aber es handelt sich bei der Aufgabe um immer gerade Arrays