Frage von leooob, 65

Wie berechne ich den Durchschnitt der 5 höchsten Zahlen bei 10 Zahlen(Java)?

Hallo, das Problem ist, dass 10 zufällige Zahlen generiert werden, diese Zahlen sind nicht höher als 100. Das heißt bspw. 50 51 100 1 25 66... Hier möchte ich jetzt aber den Durchschnitt der 5 höchsten Zahlen ermitteln in Java. Ich verlange nicht nur einen Quellcode, ich würde es auch gerne verstehen!

Antwort
von jaunel, 17

Also : Du erstellst am besten ein Array mit 10 Elementen: int [ ] zahlen = new int [ 10 ];

Dann füllst du jede Stelle deines Arrays mit einem random Wert: Arrays.setAll( zahlen, (int) Math.random() * 100 + 1)

Dann machst du Arrays.sort (zahlen);

Du nimmst dann die höchsten 5 Werte (sie wurden mit Arrays.sort aufsteigend sortiert) und teilst sie durch 5.
Wenn du noch Fragen hast, frag ruhig. (P.S. keine Garantie obs klappt, kann es gerade nicht ausprobieren)

Antwort
von ChristianPl, 22
Random rn = new Random(); // Wird benötigt um die zufallszahl zu generieren

Integer[] zufallszahlen = null; // Legt eine Liste von Ganzzahlen an mit dem Namen zufallszahlen
for (int i = 0; i < 10; i++) { // For-Schleife zählt von 0 bis 9 (< 10)
int zufallszahl = rn.nextInt(101); // Generiert die zufallszahl zwischen 0 - (einschließlich) 100
zufallszahlen[i] = zufallszahl; // Speichert die Zufallszahl an die i-te Stelle (man beginnt von 0 an zu zählen) der oben angelegten Liste
} // Ende der Schleife
Arrays.sort(zufallszahlen); // Sortiert die List (Kleinste Zahl vorne)
int gesamt = 0; // Da speichern wir den Wert der großten 5 Zahlen rein
for (int i = 4; i < 10; i++) { // Zählt von 0-9; also nimmt die 5te bis 10te Zahl der Liste
int aktuellezahl = zufallszahlen[i]; // speichert die i-te Zahl der Liste in die Variable;
gesamt = gesamt + aktuellezahl; // fügt der "Summe" der Zahlen die aktuelle Zahl hinzu
} // Ende der Schleife
// Jetzt sind die Werte der 5 größten Zahlen in der Variable gesamt abgespeichert
double durchschnitt = gesamt / 5; // 5 Da wir den Durchschnitt der 5 Zahlen haben wollen; double da bei der Teilung von einer Ganzzahl durch eine andere Ganzzahl nicht umbedingt eine neue Ganzzahl rauskommen muss 

Ich hoffe es hilft Dir weiter, wenn ja, würde ich mich über einen Dank freuen :)

Antwort
von AnonYmus19941, 39

Um die höchsten Zahlen herauszufinden:
Du erstellst dir eine Variable mit dem Wert der ersten Zahl. Dann überprüfst du bei jeder Zahl, ob sie höher ist, und erhöhst den Wert (der Variablen) entsprechend, falls die Antwort ja ist. Am Ende löschst du den Wert aus der Reihe.

Antwort
von BrutalNormal, 22

Dazu musst du 2 Dinge können/wissen

Eine Summe aus 5 Summanden durch 5 teilen (Durchschnitt) und feststellen, ob eine neue gelesene Zahl größer ist, als der bisher kleinste Summand (um am Ende die 5 größten Zahlen zu haben).

Damit sollte es ganz elegant lösbar sein

Antwort
von Gastnr007, 36

sortiere deine Zahlen, rechne die fünf höchsten zusammen und teile diese Summe /5 :D

Antwort
von fragenbuch, 21

Du erstellst eine Variable mit dem Wert 0 und generioerst per Zufall 5 Zahlen, die Du nacheinander mit der Variablen addierst und am Ende teilst Du das Ergebnis der Variablen durch 5.

Antwort
von Jonas6776, 22

Mit Bubblesort sortierst du dein Array aus Zufallszahlen, addierst dann die obersten 5 Elemente und teilst am Ende durch 5.

Also 2 for Loops für Bubblesort

Eine for loop zum Addieren der Elemente

Am Ende die Summe durch 5 teilen

Kommentar von Reyha24 ,

Lieber Arrays.sort verwenden. Bubblesort ist in den seltensten Fällen gut.

Antwort
von softie1962, 14

Vielleicht bringt dich ja der Link auf die richtige Idee:

http://openbook.rheinwerk-verlag.de/javainsel/javainsel_13_006.html

Antwort
von leooob, 27

Ist logisch, aber wie finde ich die 5 höchsten Zahlen?

Antwort
von loxa00, 44

Du nimmst diese 5 zufällig generierten Zahlen zählst alle zusammen und dann dividierst du diese durch 5.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten