Informatik felder?


12.07.2022, 14:40

.

2 Antworten

warum double und nicht void?

Die Methode soll den Durchschnitt berechnen und das Ergebnis zurückliefern. Da das Ergebnis einer Gleitkommazahl entsprechen würde (im Array liegen nur double-Werte), ist der Rückgabetyp double passend.

Den Rückgabetyp void würdest du nur einsetzen, wenn die Methode keinen Wert zurückliefern sollte.

Zum Vergleich noch einmal ein kleines Beispiel:

void printSum(int summand1, int summand2) {
  System.out.println(summand1 + summand2);
}

int printSum(int summand1, int summand2) {
  return summand1 + summand2;
}
Und was hat es mit dem feld merke auf sich?

Um den Durchschnitt einer Menge zu berechnen, benötigst du erst die Summe aller Elemente, die du anschließend durch die Anzahl der Elemente teilen kannst.

An einem einfacheren Beispiel gezeigt:

menge = [ 1, 2, 3 ]
summe = 1 + 2 + 3 = 6
durchschnitt = 6 / 3 = 2

Die Schleife in der Methode läuft durch alle Elemente der Menge, die miteinander addiert werden sollen. Da laut Aufgabenstellung nur 365 Felder befüllt werden sollten, kann davon ausgegangen werden, dass das erste Element seinen Standardwert (0) hat. Die Schleife läuft also nur von Index 1 ausgehend bis zum Ende des Arrays.

Die Variable merke dient nun dazu, sich die aktuelle Summe zu merken.

Noch einmal an einem kürzeren Beispiel gezeigt:

menge = [ 0, 5, 7, 3 ]

merke = 0
merke = 0 + 5
merke = 5 + 7
merke = 12 + 3
merke = 15

verreisterNutzer  12.07.2022, 16:10

Wow, danke für die ausführliche antwort! Müsste man dann das Feld merken noch erstellen? Also mit merke = new int []? Und könntest du mir vllt noch erklären wie man bei der Mathrandom methode auf die zahlen kommt? Weil ich hätte jetzt irgendwas mit -10 und 30 gemacht, wie es in der aufgabe steht… da verstehe ich nicht wie man auf die 40 kommt? 😅

0
regex9  12.07.2022, 16:24
@verreisterNutzer
Müsste man dann das Feld merken noch erstellen? Also mit merke = new int []?

Nein. Schau dir noch einmal den Code der Methode an: Es wird doch bereits eine lokale Variable merke mit dem Startwert 0 angelegt. Da sie eine Summe, also einen einfachen Wert speichern soll, darf sie auch kein Array sein. Arrays legst du nur dann an, wenn du mehrere Werte (also eine Menge an Werten) gleichen Typs speichern möchtest.

Und könntest du mir vllt noch erklären wie man bei der Mathrandom methode auf die zahlen kommt?

Die random-Methode liefert dir immer eine Gleitkommazahl zwischen 0 (inklusive) und 1 (exklusive). Also 0.0 <= x < 1.

Nun könntest du einmal zum Test ein paar Zufallswerte selbst in die Rechnung einsetzen (am besten direkt die Extreme), um zu schauen, was so herauskommt.

0.0 * 40 - 10 = -10
0.9 * 40 - 10 = 26
1 * 40 - 10 = 30

Die Rechnungen zeigen dir: Du würdest einen Wert zwischen -10 (inklusive) und 30 (exklusive) zurückbekommen. Also im Grunde das, was die Aufgabenstellung auch fordert.

0
regex9  12.07.2022, 16:26
@regex9

Als Leitformel, um eine Zufallszahl zwischen zwei Werten zu ermitteln, kannst du dir merken:

random * (max - min) + min

So kommst du auch auf die obige Formel:

min: -10
max: 30

random * (30 - -10) + -10 = random * 40 - 10
0

Hey,

Das void ist wenn kein Rückgabetyp der Funktion ist. Du kannst dort jeden Datenyp hinschreiben welchen du aus der Methode zurückgeben möchtest. Als Feld ist soweit wie ich das verstanden habe nur die Variable gemeint.

Kannst mir gernen eine. Kommentar unter der Antwort schreiben. Was nämlich nicht ganz genau was du wissen möchtest.

MFG Fabian

Woher ich das weiß:Hobby

verreisterNutzer  12.07.2022, 14:45

Erst mal danke. Ich verstehe nicht ganz, wie man jetzt mit dieser Methode den Durchschnitt berechnet… Verstehe die Rechnung irgendwie nicht in diesem Kontext

0
Fabian837364736  12.07.2022, 15:46
@verreisterNutzer

Grundsätzlich berechnet man den Durchschnitt durch addieren der Werte durch die Anzahl der Werte. Also bei 1, 2, 3 wäre die Summe 6 und der Durchschnitt 6/3 = 2. Bei der Funktion werden einfach mit einer for-Schleife die Summe gebildet und dann durch die Anzahl der Werte dividiert.

1
verreisterNutzer  12.07.2022, 15:51
@Fabian837364736

Super, danke! Könntest du mir vllt noch erklären wie man bei der Mathrandom methode auf die zahlen kommt? Weil ich hätte jetzt irgendwas mit -10 und 30 gemacht, wie es in der aufgabe steht… da verstehe ich nicht wie man auf die 40 kommt? 😅

0
Fabian837364736  12.07.2022, 15:55
@verreisterNutzer

Ich bin leider mit dieser Programmiersprache nicht vertraut. Welche Sprache ist das? Aber ich würde vermuten das bei Math.Random Zahlen herauskommen welche nicht den gewünschten Bereich entsprechen. Deswegen rechnet man mit den Mal 40 und - 10 gegen das die Werten in diesen Bereich rauskommen.

0