Erklärung zur Methode und array

Sebel00

Mitglied
Hallo zusammen,

ich lerne gerade über youtube java und in diesen Videos werden oft Aufgaben mitgegben.
Dieses Mal sollte der Durchschnitt von 5 zufälligen Zahlen berechnet werden, die über ein Array laufen.

1. Frage: Im Methodenrumpf muss bei den Parametern int a, int b usw eingeben werden, aber die Arrays in der Methode oben heißen x[0]...usw.
Warum bekomme ich eine Fehler, wenn ich das so angebe?

2. Frage: In dem Video hat er den Array über eine Schleifen laufen lassen und in die Paramter (int i; i < 5 , i++) geschrieben. Das int i und i < 5 kann ich mir noch erklären, aber i++ verstehe ich nicht.

public class Tutorial16 {
public static void main(String args[]) {
Scanner s= new Scanner(System.in);
System.out.println("Bitte geben Sie 5 Zahlen ein!");
int[] x= new int[5];
x[0] = s.nextInt();
x[1] = s.nextInt();
x[2] = s.nextInt();
x[3] = s.nextInt();
x[4] = s.nextInt();

double derDurchnschnitt = durchschnitt(x[0],x[1],x[2],x[3],x[4]);
System.out.println(derDurchnschnitt);
}
static double durchschnitt(x[0],x[1],x[2],x[3],x[4]) {
double loesung = (x[0]+x[1]+x[2]+x[3]+x[4])/5;
return loesung;
}

1627548467094.png
}
 
K

kneitzel

Gast
Ich versuche einmal das Problem zu erläutern:

Eine Methode bekommt Parameter. Diese Parameter sind dann mit einem Namen und dem Typ anzugeben.

Daher muss es es immer so aussehen:
RückgabeTyp Methodenname (TypParam1 Param1Name, TypParam2, Param2Name, ...)

Bei Deinem double durchschnitt(x[0],x[1],x[2],x[3],x[4]) hast Du
a) keinen Typ.
b) sind [] in einem Bezeichner nicht erlaubt.

Bei einem Methodenaufruf muss man dann für Parameter Werte angeben. Das können also Literale sein (Also sowas wie 5 oder 7 oder 0 wenn es um Integer geht) oder eben Eine Variable. Wenn Du ein Array hast, dann kannst Du Array Elemente angeben.

Wenn Du also die Methode
double durchschnitt(int a, int b, int c, int d, int e)
hast
und die so aufrufst:
durchschnitt(x[0],x[1],x[2],x[3],x[4])
Dann wird der erste Wert (Inhalt von x[0]) in a, der zweite (Inhalt von x[1]) in b u.s.w. kopiert.

Wichtig ist: Der Wert aus der Variable wird kopiert. Wenn also in der Methode a geändert wird, würde x[0] sich nicht ändern!

Edit: In Klammern noch eingefügt, was der erste Wert und der zweite Wert ist.
 

Sebel00

Mitglied
i++
Ist eine verkürzte Form von
i=i+1

Ich hab die Frage wahrscheinlich schlecht formuliert. Die generrelle Funktion von i++ ist mir bekannt.
Nur in diesem Zusammenhang verstehe ich den nicht.

Wenn ich die Schleife mal zerlege und bezug auf die einzelnen Schleifenbedingungen nehme.

for ( int i, i < 5, i++ )

int i - x(i) // das i steht für die Variable im array.
i < 5 // steht für meine 5 arrays
i++ // hier enstehen meine Fragezeichen, weil ich nicht möchte, dass die Variable i um eins erweitert wird.
 

Sebel00

Mitglied
Ich versuche einmal das Problem zu erläutern:

Eine Methode bekommt Parameter. Diese Parameter sind dann mit einem Namen und dem Typ anzugeben.

Daher muss es es immer so aussehen:
RückgabeTyp Methodenname (TypParam1 Param1Name, TypParam2, Param2Name, ...)

Bei Deinem double durchschnitt(x[0],x[1],x[2],x[3],x[4]) hast Du
a) keinen Typ.
b) sind [] in einem Bezeichner nicht erlaubt.

Bei einem Methodenaufruf muss man dann für Parameter Werte angeben. Das können also Literale sein (Also sowas wie 5 oder 7 oder 0 wenn es um Integer geht) oder eben Eine Variable. Wenn Du ein Array hast, dann kannst Du Array Elemente angeben.

Wenn Du also die Methode
double durchschnitt(int a, int b, int c, int d, int e)
hast
und die so aufrufst:
durchschnitt(x[0],x[1],x[2],x[3],x[4])
Dann wird der erste Wert (Inhalt von x[0]) in a, der zweite (Inhalt von x[1]) in b u.s.w. kopiert.

Wichtig ist: Der Wert aus der Variable wird kopiert. Wenn also in der Methode a geändert wird, würde x[0] sich nicht ändern!

Edit: In Klammern noch eingefügt, was der erste Wert und der zweite Wert ist.
Danke für die ausführliche Antwort.
Ich musste mir anscheinend den Aufbau von Methoden noch mal genauer anschauen.
 
K

kneitzel

Gast
Ich hab die Frage wahrscheinlich schlecht formuliert. Die generrelle Funktion von i++ ist mir bekannt.
Nur in diesem Zusammenhang verstehe ich den nicht.

Wenn ich die Schleife mal zerlege und bezug auf die einzelnen Schleifenbedingungen nehme.

for ( int i, i < 5, i++ )

int i - x(i) // das i steht für die Variable im array.
i < 5 // steht für meine 5 arrays
i++ // hier enstehen meine Fragezeichen, weil ich nicht möchte, dass die Variable i um eins erweitert wird.
Die for Schleife hat 3 Bereiche in den Klammern:
for (Initialisierung; Bedingung; Code nach jedem Durchlauf) { }

Damit ist das nichts anderes als:
Initialisierung
while (Bedingung) {
...
Code nach jedem Durchlauf
}

Also zu dem Code in Deinem letzten Post:
- keine , sondern ;
- Die Variablen-Deklaration muss eine Initialisierung enthalten, also int i = 0;
 

Sebel00

Mitglied
Die for Schleife hat 3 Bereiche in den Klammern:
for (Initialisierung; Bedingung; Code nach jedem Durchlauf) { }

Damit ist das nichts anderes als:
Initialisierung
while (Bedingung) {
...
Code nach jedem Durchlauf
}

Also zu dem Code in Deinem letzten Post:
- keine , sondern ;
- Die Variablen-Deklaration muss eine Initialisierung enthalten, also int i = 0;

Die oben aufgelisteten Fehler sind natürlich korrekt gefunden, aber waren nur Flüchtigkeitsfehler beim Verfassen des Posts.

Die ersten beiden Bereiche der for-Schleife sind jetzt klar, aber worauf bezieht sich der "Code nach jedem Durchlauf" in meinem Beispiel Code.
 
K

kneitzel

Gast
Die for schleife macht folgendes:
1. Initialisierung: Es wird eine lokale Variable i erzeugt und mit 0 initialisiert.
2. Bedingung: ist i < 5?
2.1 Ja 1. Es wird der Block der Schleife ausgeführt;
2.2 Ja 2. Dann kommt es zur Ausführung "Code nach jedem Durchlauf": i wird um 1 erhöht (damit ist i nun 5).
2.3 Ja 3. Und es wird zu 2. gesprungen.

Hilft das etwas weiter? Immer wenn der Block ausgeführt wurde, wird i erhöht.
 

Neumi5694

Top Contributor
In der For-Schleife kannst du die einzelnen Bereiche auch leer lassen, wobei der mittlere Bereich - falls leer - immer true liefert.
for( ; ; ) {...} entspricht also while (true) {...} und ist damit eine Endlosschleife.

Es gibt da noch das for-each Konstrukt, beginnt ebenfalls mit "for", funktioniert aber grundlegend anders.
 

mihe7

Top Contributor
Als Ergänzung zum Nachvollziehen:

Java:
for (int i = 0; i < 5; i++) {
    x[i] = s.nextInt();
}
ist äquivalent zu:
Java:
{
    int i = 0;
    while (i < 5) {
        x[i] = s.nextInt();
        i++;
    }
}
 

temi

Top Contributor
Die ersten beiden Bereiche der for-Schleife sind jetzt klar, aber worauf bezieht sich der "Code nach jedem Durchlauf" in meinem Beispiel Code.
Du hast eine Schleife. Eine Schleife dient dazu etwas wiederholt auszuführen. In deinem Fall möchtest du eine Variable (i) mit 0 initialisieren, etwas tun und dann die Variable um 1 erhöhen. Dies solange, bis die Variable den Wert 4 hat. "i" soll also nacheinander die Werte 0, 1, 2, 3, 4 annehmen, was genau dem Index eines nullbasierten Arrays mit 5 Elementen entspricht.

Damit sollte klar sein, was "Code nach jedem Durchlauf" tut und warum es so richtig ist.

1. Die Schleifenvariable mit 0 initialisieren.
2. Wenn die Abbruchbedingung nicht erfüllt ist, den Code innerhalb der Schleife ausführen.
3. Die Schleifenvariable um 1 erhöhen
4. Weiter mit 2.

Innerhalb der Schleife kannst du damit den Wert von "i" dazu verwenden, um nacheinander auf alle Elemente des Arrays zu zugreifen.

Das ist die häufigste Anwendung der Schleife, aber es hängt natürlich immer davon ab, was du erreichen möchtest. Du könntest auch "i" mit 4 initialisieren und mit i-- herunterzählen, wenn es dein Wunsch ist rückwärts durch das Array zu gehen. Oder du kannst mit i+=2 den Wert immer um 2 erhöhen, um nur jedes zweite Element anzusprechen. Was auch immer benötigt wird. Die Abbruchbedingung muss dann entsprechend angepasst werden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
T Erklärung zur Methode, Modulator Java Basics - Anfänger-Themen 3
P Methoden Erklärung wie ich eine spezielle Methode richtig anwende Java Basics - Anfänger-Themen 9
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
D Erklärung Java Basics - Anfänger-Themen 3
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
D Erklärung eines Satzes Java Basics - Anfänger-Themen 0
M Erklärung: Int IndexOf (String s) Java Basics - Anfänger-Themen 3
C Methoden erklärung Java Basics - Anfänger-Themen 8
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
D Erklärung static boolean Java Basics - Anfänger-Themen 6
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
H Primzahltest : Erklärung zum Code Java Basics - Anfänger-Themen 2
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
B Benötige Erklärung für Lösungsansatz Java Basics - Anfänger-Themen 0
M web.xml Abschnitt Erklärung Java Basics - Anfänger-Themen 2
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
A erklärung von code Java Basics - Anfänger-Themen 4
A DezimalZuBinär - Erklärung der Vorgehensweise des Programms Java Basics - Anfänger-Themen 4
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
G Erklärung .next Java Basics - Anfänger-Themen 4
D Erklärung Kalenderwoche Java Basics - Anfänger-Themen 14
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
S Threads Erklärung ReentrantLock Java Basics - Anfänger-Themen 6
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Interpretation/Erklärung main Java Basics - Anfänger-Themen 4
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
E Quellcode Erklärung Java Basics - Anfänger-Themen 8
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
A Java Erklärung? Java Basics - Anfänger-Themen 4
D Beans Erklärung Java Basics - Anfänger-Themen 11
Q Klausur aufgabe Erklärung Java Basics - Anfänger-Themen 12
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
K gute erklärung Java Basics - Anfänger-Themen 5
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
Spin Taschenrechner - Erklärung Java Basics - Anfänger-Themen 9
S Code-Erklärung Java Basics - Anfänger-Themen 4
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M enhanced for - erklärung Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
R Erklärung bitte Java Basics - Anfänger-Themen 3
G Erklärung for-Schleife bei Strings Java Basics - Anfänger-Themen 4
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
W Programm erklärung Java Basics - Anfänger-Themen 7
F Threads - Erklärung und Beispielprogramm Java Basics - Anfänger-Themen 4
D Erklärung für eine Abfrage. Java Basics - Anfänger-Themen 9
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben