Kurze Frage zum Ergebniss

Status
Nicht offen für weitere Antworten.

Schocksen

Mitglied
public class MischMasch4 {
int zähler = 0;
public static void main(String[] args){
int anzahl = 0;
MischMasch4[] m4a = new MischMasch4[20];
int x = 0;

while(x<10){

m4a[x] = new MischMasch4();
m4a[x].zähler = m4a[x].zähler + 1;
anzahl = anzahl + 1;
anzahl = anzahl + m4a[x].vielleichtNeu(x);
x = x + 1;
}
System.out.println(anzahl + " " + m4a[4].zähler);
}


public int vielleichtNeu(int index) {
if (index < 5){
MischMasch4 m4 = new MischMasch4();
m4.zähler =m4.zähler + 2;
return 1;
}
return 0;
}

}

Ausgabe = 15 1

So jetzt zu meiner Frage. Wie ich auf das Ergebniss von anzahl komme, also 15 ist mir nach längerer Überlegung klar geworden.
Allerdings versteh ich das Ergebniss von m4a[x].zähler nicht.
Nach meiner Überlegung läuft die while Schleife ja 10mal durch, erstellt dabei jedesmal ein neues MischMasch4 Objekt in dem array m4a an der Stelle von x.(grün markiert)
Dann setzt er an jeder m4a[x] den Zähler und zählt jedesmal +1 auf den Zähler dazu.(rot markiert).
Ausgeben will er die 5.Stelle im Array (m4a[4].zähler) welche ja dann im 5. Durchlauf eigentlich 5 sein müsste?

Ich glaub ich bin hier ziemlich auf dem Holzweg, aber da ich noch totaler Java Anfänger bin komm ich momentan einfach nicht weiter, war schon super stolz auf mich dass ich anzahl gelöst habe aber die 2.Ausgabe bringt mich zum verzweifeln.
Kann mir da wer erklären wieso ich auf 1 komme, und falls meine vorherigen Überlegungen mit Objekten ins Array und +1 aufzählen und sowas falsch sind vlt. korrigieren kann.
 
S

SlaterB

Gast
> Dann setzt er an jeder m4a[x] den Zähler und zählt jedesmal +1 auf den Zähler dazu.(rot markiert).
> Ausgeben will er die 5.Stelle im Array (m4a[4].zähler) welche ja dann im 5. Durchlauf eigentlich 5 sein müsste?

ich verstehe deine Erklärungen nicht soweit, dass ich sie korrigieren könnte

jedes neue Objekt hat anfangs einen Zähler-Wert von 0, für alle Objekte wird der Zähler um 1 erhöht, 0+1 ist immer 1,
daher ist die Ausgabe 1 doch ganz normal

die zähler sind nicht von x abhängig und auch nicht miteinander verknüpft (etwa zähler des vorherigen Objektes +1)
 

Schocksen

Mitglied
naja also ich war der annahme das dem zähler bei jedenm Durchlauf +1 dazugerechnet wird.
Also wäre der Zähler nach dem ersten Durchlauf 1, nach dem zweiten Durchlauf 2, nach dem dritten 3 usw.
Und in das Objekt wird halt jedesmal der aktuelle Zähler rein gesetzt.

Dann ist also meine Frage wieso der Zähler nach jedem Durchlauf obwohl eins dazu gezählt wird trotzdem 0 ist.
 
S

SlaterB

Gast
> Dann ist also meine Frage wieso der Zähler nach jedem Durchlauf obwohl eins dazu gezählt wird trotzdem 0 ist.

hmm, die Ausgabe spricht von 1, zumindest für den Zähler vom 4. Objekt,
ich behaupte, dass alle Zähler auf 1 stehen,
wieso sagst du dann 'trotzdem 0'?

> Also wäre der Zähler nach dem ersten Durchlauf 1, nach dem zweiten Durchlauf 2, nach dem dritten 3 usw.

doch nicht 0?!

wenn ein neues Objekt erzeugt wird, ist dessen Anfangszustand von int-Variablen immer 0, fallst du das meinst
 

Schandro

Top Contributor
Gehen wir mal von diesem Code aus:
Java:
public class MischMasch4 {

	int zähler = 0;

	public static void main(String[] args) {
		MischMasch4[] m4a = new MischMasch4[20];
		
		int x = 0;
		while (x < 10) {
			m4a[x] = new MischMasch4();
			m4a[x].zähler = m4a[x].zähler + 1;
			
			x = x + 1;
		}
		
		System.out.println(m4a[4].zähler);
	}
}
Ich hab einfach nur die Methode vielleichtNeu rausgekürzt, die ist zZ. egal


In diesem Code werden insgesamt 10 Objecte von der Klasse MischMasch4 erstellt. Jedes einzelne dieser Objecte hat einmal die Variable zähler. Das heisst es gibt den int zähler insgesamt 10 mal.

Wenn du nun innerhalb der Schleife schreibst:
Java:
m4a[x].zähler = m4a[x].zähler + 1;
Dann wird die zähler Variable des x'sten Objectes um eins erhöht. Der anfangswert ist 0, deswegen ist sie nach dem Aufruf 1.

Wenn jedes Object den zähler seines Vorgängerobjectes+1 haben soll, musst du schreiben:
m4a[x].zähler = m4a[x-1].zähler + 1;
Das Problem daran: Beim allerersten Durchlauf gibt es noch gar kein "Vorgängerobject". Deswegen wird eine ArrayIndexOutOfBoundsException geschmissen.
Deshalb müssen wir eine if-Abfrage einbauen:
if(x>0){
m4a[x].zähler = m4a[x-1].zähler + 1;
}
Jetzt wird der zähler bei allen Objecten weiterhin auf zähler des Vorgängerobjectes+1 gesetzt. AUßER beim ersten Object, da ist x nämlich nicht größer 0. Deshalb bleibt der zähler des ersten Objectes bei 0.


PS: Ich hab ihr überall "Object" geschrieben, weil es einfacher ist. Damit meinte ich natürlich immer nur die 10 Objecte der Klasse MischMasch4 die in dem Array liegen.
 

Schocksen

Mitglied
Ok, ich war halt der Annahme dass einfach ein leeres Object erstellt wird und in dieses immer der aktuelle Zähler gesetzt wird welcher sich nach jedem durchlauf +1 hochzählt.

Ich bin gar nicht auf die Idee gekommen dass beim erstellen des Object schon der Zähler( also die int variable mit 0) eingesetzt wird.

Aber jetzt wirds mir klar, der Punktoperator verweist also immer auf den Zähler im object[x], und dieser wird dann immer um 1 erhöht, in dem Fall also von 0 auf 1. Und das bei jedem Objekt.

Ich hatte halt komischerweise den Gedankengang dass einfach der Zähler (den ich ganz am anfang mit 0 deklariert hab) bei jedem Durchlauf der Schleife eins hoch gezählt wird, was aber ja vollkommener quatsch wird, da die variable Zähler ja beim kompletten Durchlauf gar nicht angerührt wird, sondern nur der jeweilige Zähler der sich gerade im object[x] befindet.

Dank euch für die Hilfe, bin wieder ein ganzes Stück weiter gekommen heute.:toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
L Kurze Frage... Java Basics - Anfänger-Themen 2
C Kurze Frage zur Polymorphie Java Basics - Anfänger-Themen 1
B Rekursion Schneeflocke - Kurze Frage zur Methode Java Basics - Anfänger-Themen 11
TechGirl LinkedList - kurze allgemeine Frage Java Basics - Anfänger-Themen 17
T Objektorientierung-Kurze Frage Java Basics - Anfänger-Themen 5
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
D Compiler-Fehler kurze Frage (Fehler): runde Klammern im Println Java Basics - Anfänger-Themen 3
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
M kurze frage zu meinem Code ... Java Basics - Anfänger-Themen 3
T Kurze Frage zu Arrays Java Basics - Anfänger-Themen 4
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
X Kurze Frage zu Java Doc Java Basics - Anfänger-Themen 3
G Kurze Frage zu Arrays Java Basics - Anfänger-Themen 3
G Warteschlange/Reihungen kurze syntaktische Frage Java Basics - Anfänger-Themen 2
J Erste Schritte Kurze Frage zu Listenern und If-Bedingung Java Basics - Anfänger-Themen 2
S Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben Java Basics - Anfänger-Themen 30
M kurze frage: Ohne index.of position von string angeben Java Basics - Anfänger-Themen 16
A Methoden Langer Text, kurze Frage Java Basics - Anfänger-Themen 10
S Kurze Frage zur Effizienz: Java Basics - Anfänger-Themen 4
R Kurze Ouelltext frage Java Basics - Anfänger-Themen 3
M kurze Frage zu Graphics Java Basics - Anfänger-Themen 5
Screen Kurze Frage Umwandlung von Zahlen Java Basics - Anfänger-Themen 2
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
A kurze frage zu arrays und deren zuweisung Java Basics - Anfänger-Themen 11
J Kurze Frage zur Primzahlberechnung Java Basics - Anfänger-Themen 8
B kurze Frage if(!) Java Basics - Anfänger-Themen 19
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
G kurze frage zu if schleifen Java Basics - Anfänger-Themen 15
G kurze if frage Java Basics - Anfänger-Themen 8
G Kurze Frage zur Erstellung des Projektplans Java Basics - Anfänger-Themen 7
C OOP - Kurze Frage Java Basics - Anfänger-Themen 12
F Kurze Frage: JLabel in BorderLayout einfügen Java Basics - Anfänger-Themen 2
J QuickSort - kurze Frage Java Basics - Anfänger-Themen 9
A Kurze Frage zur Verwendung von this Java Basics - Anfänger-Themen 9
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
S Kurze Verständnissfrage Java Basics - Anfänger-Themen 4
N Kurze Hilfe !! Java Basics - Anfänger-Themen 3
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
B Methoden Tricky, kurze Schreibweise? Java Basics - Anfänger-Themen 3
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
R Kurze Linien alle x-Pixel Java Basics - Anfänger-Themen 2
U ArrayList kurze Einführung Java Basics - Anfänger-Themen 3
2 Datentypen Kurze Schreibform bei ArrayList (Vs String Array) Java Basics - Anfänger-Themen 6
P OOP 3 kurze Fragen Java Basics - Anfänger-Themen 2
J Benötige kurze Definition zum Programm Java Basics - Anfänger-Themen 2
R klausurvorbereitung uni HILFE!! kurze fragen,kurze antworten Java Basics - Anfänger-Themen 9
D 2 kurze Fragen Java Basics - Anfänger-Themen 5
Q 2 kurze Fragen Java Basics - Anfänger-Themen 3
D Kurze Fragen zu setVisible. Java Basics - Anfänger-Themen 4
M Kurze Pause ins Programm einbauen Java Basics - Anfänger-Themen 5
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben