Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich lerne gerade,autodidaktisch, Java und habe einen Programmcode der eine Ausgabe erzeugt, die ich mir absolut nicht erklären kann.
Vielleicht könnt ihr mir ja weiterhelfen.
Java:
public class MischMasch4 {
int zaehler = 0;
public static void main (String[]args) {
int anzahl = 0;
MischMasch4[] m4a = new MischMasch4[20];
int x = 0;
while(x<9) {
m4a[x] = new MischMasch4();
m4a[x].zaehler = m4a[x].zaehler + 1;
anzahl = anzahl + 1;
anzahl = anzahl + m4a[x].vielleichtNeu(x);
x = x +1;
}
System.out.println(anzahl + " " + m4a[1].zaehler);
}
public int vielleichtNeu(int index) {
if(index < 5) {
MischMasch4 m4 = new MischMasch4();
m4.zaehler = m4.zaehler + 1;
return 1;
}
return 0;
}
}
Die Ausgabe lautet 14 1 .Ich kann mir wirklich kaum erklären warum.
Die 14 ist sehr einfach zu erklären, du hast zwei Stellen wo anzahl hochgezählt wird: Zeile 10 und Zeile 11.
In Zeile 10 wird jedes mal um 1 hochgezählt pro Schleifendurchlauf - 9x wird die Schleife durchlaufen.
In Zeile 11 wird eine Methode aufgerufen, die mal 1 und mal 0 zurückgibt. 1 gibt zurück, wenn der übergebene int werden (der dein Schleifenzähler ist) kleiner als 5 ist - also in den ersten 5 Durchläufen. 9+5 ergibt 14.
DIe 1 ist auch leicht zu erklären. Wann wird den der Zähler vom element an Stelle 1 hochgezählt?
Nun die Zähler werden in Zeile 9 und Zeile 20 angefasst. Fangen wir mit Zeile 20 an.
Dort wird ein Objekt in 19 erzeugt, dessen Zähler dann hochgezählt wird. Das ist ein...
Die 14 ist sehr einfach zu erklären, du hast zwei Stellen wo anzahl hochgezählt wird: Zeile 10 und Zeile 11.
In Zeile 10 wird jedes mal um 1 hochgezählt pro Schleifendurchlauf - 9x wird die Schleife durchlaufen.
In Zeile 11 wird eine Methode aufgerufen, die mal 1 und mal 0 zurückgibt. 1 gibt zurück, wenn der übergebene int werden (der dein Schleifenzähler ist) kleiner als 5 ist - also in den ersten 5 Durchläufen. 9+5 ergibt 14.
DIe 1 ist auch leicht zu erklären. Wann wird den der Zähler vom element an Stelle 1 hochgezählt?
Nun die Zähler werden in Zeile 9 und Zeile 20 angefasst. Fangen wir mit Zeile 20 an.
Dort wird ein Objekt in 19 erzeugt, dessen Zähler dann hochgezählt wird. Das ist ein neues Objekt, was nur im Kontext der Methode existiert. Kann also kein Einfluss auf den Zähler an Stelle 1 haben. Also bleibt nur Zeile 9. Da gilt Zähler des aktuellen Elements = Zähler des aktuellen Elements + 1.
Da der initialwert vom Zähler pro Element 0 ist und für jedes Element diese Zeile genau einmal durchlaufen wird, ist er danach 1.
ich finde den Code auch nicht so gut lesbar. Vielleicht versuchst du, den Code einfach verständlicher für dich selbst zu formulieren. Beispielsweise könntest du statt x=x+1 einfach x++ machen, sodass du auf den ersten Blick einfach siehst, was passiert. Ich denke du verwirrst dich auch mit den Variablennamen selbst. Vielleicht versuchst du auch hier etwas aussagekräftiges zu nehmen, damit du deinen Code in 5 Wochen auch noch sauber lesen kannst. Eine weitere Möglichkeit ist die, das du durch Kommentare versuchst deinen Code auch zu beschreiben, denn wenn du längere Programme hast, wird es dir auch hier schwerer fallen, Code nachzuvollziehen. ( auch bzw. vor allem dein eigener). Es gibt mehrere Möglichkeiten Kommentare zu entwerfen =) : JavaDoc, einzeilige Kommentare und auch mehrzeilige Kommentare. Um vielleicht Schleifen besser nachvollziehen zu können, versuche dich doch mal an Kontrollflussaufgaben, indem du versuchst eine Krone oder auch was anderes auszugeben. Versuche dies auf unterschiedlicher Art und Weise .