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

...komplette Frage anzeigen

9 Antworten

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 :)

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.

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)

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

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

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

Reyha24 01.05.2016, 07:26

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

0

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

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.

Was möchtest Du wissen?