Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen,
ich habe folgende Aufgabenstellung erhalten:
Erstellen Sie eine öffentliche statische Methode, namens median(int[] arr), welche ein 1-
dimensionales int-Array als Eingabeparameter erhält und den Median des Arrays als double zurück
gibt. Falls das Array leer ist soll die Methode 0 zurückgeben. Falls das Array eine gerade Anzahl an
skalaren Einträgen enthält soll der Mittelwert der beiden Werte, die sich in der Mitte des sortieren
Arrays befinden, zurück gegeben werden. Das Array soll mit mit einem
bubbleSort-Sortieralgorithmus aufsteigend sortiert werden.
Bsp: [] → 0
[1,2,3,4,5] → 3
[5,2,4,3,1] → 3
[1,2,3,4] → 2.5
Ich habe jetzt den Code soweit geschrieben. Ich verstehe aber nicht wie ich das bool mit dem int verbinden kann.
Java:
public class Functionality {
public static void main(String[] args) {
int [] arr = {2,6,7,8};
System.out.println(median(arr));
}
public static double median(int [] arr) {
if (arr.length == 0){
System.out.println("0");
}
int n = arr.length;
int temp = 0;
for(int i=0; i < n; i++){
for(int j=1; j < (n-i); j++){
if(arr[j-1] > arr[j]){
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
return temp;
}
public boolean allEven(int[] arr) {
for(int i : arr){
if(i%2 == 0){
double avg = arr[(arr.length/2)-1]+arr[arr.length/2]/2;
}else {
int middle = arr[arr.length/2];
double res = middle;
}
}
return false;
}
}
Ich verstehe ehrlich gesagt nicht, was Du mit der Methode allEven() machen willst. Um den Median zu bestimmen, ist es notwendig, das eingehende Array zu sortieren und anschließend den Wert aus der Mitte des sortierten Arrays (bzw. den Mittelwert der beiden mittig positionierten Werte) zurück zu geben.
Schleifen benötigst Du einzig für den Sortieralgorithmus.
Mit der isEven methode wollte ich prüfen ob der Arraygröße gerade oder ungerade ist. Je nachdem muss man ja dann bei einer geraden Anzahl von Werten den Mittelwert zwischen den beiden werten nehmen ansonsten der mittlere Wert. Oder geht das einfacher als das ich mir das überlegt habe?
Aber wozu die Schleife for(int i : arr){
und wozu lagerst Du diesen Teil in eine andere Methode aus. Das, was Du in allEven machen willst, ist doch essentiell zur Bestimmung des Medians. Mach lieber eine eigene Methode für BubbleSort. dann erscheint der Code übersichtlicher und logisch strukturiert.
Aber ich frage doch in isEven einen Boolean ab. Und meine normale Methode ist ein double. Das kollidiert doch. Oder wie kann ich das in die methode einfügen?
Mit der isEven methode wollte ich prüfen ob der Arraygröße gerade oder ungerade ist. Je nachdem muss man ja dann bei einer geraden Anzahl von Werten den Mittelwert zwischen den beiden werten nehmen ansonsten der mittlere Wert. Oder geht das einfacher als das ich mir das überlegt habe?