Java Arrays - Ausgabe in Methode

chrisx911

Mitglied
Hallo zusammen,

ich habe folgendes Problem.
Ich muss ein Array erstellen und den Median davon ausgeben, das ganze aber nicht in der Main sondern in einer neuen Methode. In der Main Methode funktioniert es einwandfrei. Da aber die Methode einen return Wert haben möchte, komme ich leider nicht weiter.

Setze ich kein return, sagt der Compiler: missing return statement.
Setze ich ein return, kommt: " incompatible types: int[] cannot be converted to int
return werte;"

Vielleicht hat jemand einen Tipp, wie ich das Problem lösen kann. 🙂

Viele Grüße
Java:
import java.util.Arrays;

 public class Aufgabe1a {
        
    
        public static void main(String[] args) {
        
                  
              
        }
        
public static int median ()    {
    
        int[] werte = {8,2,9,4,5};
                  
              
              Arrays.sort(werte);

    System.out.println(werte[0]);
    System.out.println(werte[1]);
    System.out.println(werte[2]);
    System.out.println(werte[3]);
    System.out.println(werte[4]);
    
    System.out.println("Der Median bei einer ungeraden Anzahl ist " + (werte[2]));
    

    return werte;
 }

 }
 
Was ist den die Aufgaben Stellung von welchen Datentyp soll den die Methode zurückgeben?

Du hast in der Methode ein Array erstellt. Also wird es wohl die Vorgabe sein das du das auch zurück gibst.

Java:
public static int[] median ()
 
Also erst einmal ist das so natürlich nicht übersetzbar. Die Methode hat int als Rückgabetyp und das Return gibt ein int[] zurück.

Und ich habe Dich so verstanden, dass Du es unterteilen sollst, d.h. nicht alles in eine Methode packen. Und was hast Du gemacht? Alles in eine Methode gepackt!

Was macht denn da Sinn?
Median eines Arrays ausgeben. Also wäre das eine Methode, die ein int Array als Parameter bekommt und ein int zurück gibt.
 
Was ist den die Aufgaben Stellung von welchen Datentyp soll den die Methode zurückgeben?

Du hast in der Methode ein Array erstellt. Also wird es wohl die Vorgabe sein das du das auch zurück gibst.

Java:
public static int[] median ()
Das ist sie Aufgabenstellung:
Schreiben Sie eine Methode static int median(int[] werte), die ein aufsteigend sortiertes
Integerfeld bekommt und daraus jeweils den Median berechnet. Der Median ist in einem sortierten Feld genau das Feld in der Mitte. Bei einer geraden Anzahl von Zahlen können Sie das Feld links der Mitte nehmen.
 
Wenn das so ist ist der Rückgabe Wert ein int.
Aber du sollst das Array nicht in der Methode erstellen sondern der Methode übergeben was du nicht tust.

Sortieren tust du es ja.

Du sagst du sollst den mittelesten Wert des sortieren Arrays zurückgeben.
Also zb bei einen Array mit 9 Elementen das 5.
So nun denke nach wie du an den Wert kommst was genau in der Mitte des Arrays ist.

Auch wie du an die Länge des Arrays kommst und somit dann an die Mitte.

Dann hast du den Index für das Array und auch den Rückgabe Wert.
 
Du bekommst bereits ein sortiertes Integerfeld - daher ist kein sortieren mehr notwendig.
Alles, was Du machen musst, ist also das richtige Element zurück geben.

Dazu kannst Du einfach einmal aufschreiben, welches Element genommen wird, wenn die entsprechende Anzahl an Elementen vorhanden ist, also schreib eine Tabelle für die Array Größen: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Wenn Du dann jeweils das Element dahinter geschrieben hast (Schrein auch den index des Elements auf!), dann kannst Du schauen, welche Regel Du daraus ableiten kannst.

Die Größe des Arrays kannst Du ja auslesen (length Attribut). Somit kannst Du mit der Gesetzmäßigkeit die du ja herausgefunden hast, den Index bestimmen und dann auch das Element an dem index zurück geben.
 
Nochmal zum Verständnis und abgesehen von der Aufgabe:
Ich möchte die Ausgabe nur der anderen Methode in public static void median vornehmen. Es kompiliert auch aber eine Ausgabe erscheint nicht.
Was mache ich falsch? Vielen Dank schon mal für eure zahlreichen Antworten! 🙂


Java:
import java.util.Arrays;

 public class test {
        
    
        public static void main(String[] args) {
        
                  
        int[] werte = {8,2,9,4,5};
                  
              
              Arrays.sort(werte);

    
        }
    public static void median (int werte [])    {
        
        System.out.println("Der Median bei einer ungeraden Anzahl ist " + (werte[2]));
        
                        
    }
 }
 
Ok du sortierst dein Array.
Aber die erstellte Methode rufst du nicht auf.
Auch wenn du jetzt auch das Array an die Methode übergibst. Aufrufen (starten) tust du sie nicht
 
Wo sollte denn auch eine Ausgabe her kommen?

Geh doch einfach einmal deine main Methode durch und sag, was die einzelnen Zeilen machen. Bei welcher erwartest Du eine Ausgabe?
 
Du hast die Methode erstellt, ein Haus gebaut. Benutzen tust du es nicht. Gehst nicht hinein kannst somit auch nicht aus den Fenster schauen.
Das Haus steht einfach da. So geht es deiner Methode. Die wird auch nicht benutz.
 

Neue Themen


Zurück
Oben