Klassen und Objekte

Babylu

Mitglied
hallo,

ich bin ein totaler Anfänger und übe mich gerade in Java ein mit dem Buch Kopf bis Fuß :rtfm:.
habe ein Verständnis Problem bei dieser Übung ???:L (Seite 44, kapitel2) und würde freuen mich über eine Erklärung in einfachen Worten (so dass ich es auch verstehe :D) freuen.


das Skript:
[Java]
class Echo {
int zähler = 0;
void hallo() {
System.out.println("Halloooo...");
}
}
[/Java]

[Java]
public class EchoTestlauf {
public static void main(String[] args) {
Echo e1 = new Echo();
Echo e2 = new Echo();
int x = 0;
while ( x < 4){
e1.hallo();
e1.zähler = e1.zähler + 1;
if ( x == 3){
e2.zähler = e2.zähler + 1;
}
if ( x > 0){
e2.zähler = e2.zähler + e1.zähler;
}
x = x + 1;

}
System.out.println(e2.zähler);
}
}
[/Java]

und am Ende soll das hier rauskommen als Ergebnis
Halloooo...
Halloooo...
Halloooo...
Halloooo...
10

nun zu meinem Problem wenn ich [c] while ( x < 1) [/code] setze kommt das hier raus
Halloooo...
0

das verstehe ich noch (weil Zähler null ist kommt da eine null raus).:)

wenn ich [c] while ( x < 2) [/code] setze kommt das hier raus
Halloooo...
Halloooo...
2

wieso kommt da eine zwei als Ergebnis raus (nach meinem Denken sollte da eine 1 raus kommen, weil er gar nicht bis 2 durchlaufen sollte)???:L

wenn ich [c] while ( x < 3) [/code] setze kommt das hier raus
Halloooo...
Halloooo...
Halloooo...
5

und das versehe ich erst recht nicht!
ich bitte um eine Erklärung.


mfg

Babylu
 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
wenn ich while ( x < 2) setze kommt das hier raus
Halloooo...
Halloooo...
2

das kommt raus, weil er 2x die Schleife durchläuft ....

d.h. er setzt beim ersten mal e1 zähler auf 1

beim 2ten Schleifen durchlaufen setzt er dann e1 Zähler auf 2 und geht auch in die Methode
if(x>0) rein, da der Zähler ja größer 0 ist (1) und setzt e2 auf 2 (0+2)

somit is e2 = 2


wenn ich while ( x < 3) setze kommt das hier raus
Halloooo...
Halloooo...
Halloooo...
5

und das versehe ich erst recht nicht!

das kommt raus, weil er 3x die Schleife durchläuft ....

d.h. er setzt beim ersten mal e1 zähler auf 1

beim 2ten Schleifen durchlaufen setzt er dann e1 Zähler auf 2 und geht auch in die Methode
if(x>0) rein, da der Zähler ja größer 0 ist (1) und setzt e2 auf 2 (0+2)

somit is e2 = 2 ... dann läuft er diesmal nochmal durch setzt e1 auf 3 und da x>0 ist geht er auch wieder in die IF Abfrage und addiert e2.zähler (2) und e1.zähler (3) => 5

und wenn mein Kaffee wirkt, sollte ich keine Fehler gemacht haben :D
als Tipp bau dir am Besten System.out.println(...) in deinen Code so versteht man gerade zu Anfang die Abläufe besser ..... als Beispiel:

Java:
 MyClass e1 = new MyClass();
		        MyClass e2 = new MyClass();
		        int x = 0;
		        while ( x < 3){
			            e1.hallo();
			            e1.zähler = e1.zähler + 1;
			            System.out.println("Durchlauf: "+x+"E1 Zähler= "+e1.zähler);
			         if ( x == 3){
			            e2.zähler = e2.zähler + 1;
			        }
			        if ( x > 0){
			            e2.zähler = e2.zähler + e1.zähler;
			            System.out.println("Durchlauf: "+x+"E2 Zähler= "+e2.zähler);
			        }
			        x = x + 1;		    
		        }
		        System.out.println(e2.zähler);
		    }

€dit: ich sehe gerade nach deiner Formatierung sieht es so aus, als ob die IF Schleife unten gar nicht in der While Schleife drin ist ,... ist das vll. dein Denkfehler?
 
Zuletzt bearbeitet:
T

transdenzentral

Gast
Mist, ich war zu langsam ;)

Grund für Dein Mysterium liegt hier:
[JAVA=12]
if ( x > 0){
e2.zähler = e2.zähler + e1.zähler;
[/code]

Erklärung siehe oben ;)

@pl4gu33: Dein Kaffe wirkt ;)
 

Babylu

Mitglied
Zitat:
wenn ich while ( x < 2) setze kommt das hier raus
Halloooo...
Halloooo...
2

das kommt raus, weil er 2x die Schleife durchläuft ....

also nach meinem Wissen dürfte er die schleiche nicht 2x durchlaufen.
ich habe mir es mal erklären lassen und mir wurde gesagt.

Code:
while (x <2)
// d.h. führe solange aus bis x kleiner als 2 ist soll bedeuten das x eins sein kann aber nicht 2 weil er ja dann gleich wie 2 wäre und somit die schleife nur 1x durchlaufen kann/sollte.
oder irre ich mich dabei???:L ( wenn ja bitte um Erklärung)


€dit: ich sehe gerade nach deiner Formatierung sieht es so aus, als ob die IF Schleife unten gar nicht in der While Schleife drin ist ,... ist das vll. dein Denkfehler?

das sieht nur so aus ist aber in der while schleife sorry für die schlechte Formatierung!
 

pl4gu33

Top Contributor
also nach meinem Wissen dürfte er die schleiche nicht 2x durchlaufen.
ich habe mir es mal erklären lassen und mir wurde gesagt.

Code:
while (x <2)
// d.h. führe solange aus bis x kleiner als 2 ist soll bedeuten das x eins sein kann aber nicht 2 weil er ja dann gleich wie 2 wäre und somit die schleife nur 1x durchlaufen kann/sollte.
oder irre ich mich dabei???:L ( wenn ja bitte um Erklärung)




das sieht nur so aus ist aber in der while schleife sorry für die schlechte Formatierung!

die Bedingung heißt führe solange aus .... bis x<2 nicht mehr erfüllt ist

er fängt bei x=0 an,... prüft beim Schleifeneintritt die Bedingung ob x<2 ... ist es nicht weil x=0 dann geht er einmal durch die Schleife und setzt zum Schluss x auf 1 ,... dann prüft er wieder die Bedingung x<2 .... x=1 also nochmal durch und dann erhöht er auf x=2 ... nun prüft er wieder x<2 und geht aus der Schleife raus da x=2 is .... also 2 Durchläufe :)
 
T

transdenzentral

Gast
Ja du hast einen Denkfehler.

Nach dem ersten Schleifen - Durchgang ist x = 1 (wegen Zeile 15) (Bedingung x > 2 erfüllt)

Nach dem zweiten Schliefen Durchgang wird das x wieder erhöht (wegen Zeile 15) im gleichen Durchlauf, jetzt ist x = 2 und die Schleife führt keinen 3. Durchgang aus. (x = 2; Bedingung x > 2 nicht erfüllt)

EDIT: Wieso bin ich immer zu lahm :(
 

Babylu

Mitglied
stimmt ich hatte die while schleife falsch verstanden :eek: aber.... ich habe leider immer noch nicht verstanden wie er auf die 10 kommt ;(
ich habe auch die Hilfestellung von pl4gu33 benutzt
Code:
System.out.println("Durchlauf: "+x+"E1 Zähler= "+e1.zähler);
es zeigt mir dann auch die Werte an aber wie er drauf kommt leider nicht ;(
also meine denke ist so:
durchlauf 1 = 0
durchlauf 2 = 2 weil
Code:
x = x + 1;
2x
durchlauf 3 = 5 so jetzt keine Ahnung
durchlauf 4 = 10 (system-over-load bei mir :oops:)
wäre für eine sehr genau Erklärung damit ich das auch verstehe
 

Michael...

Top Contributor
durchlauf 3 = 5 so jetzt keine Ahnung
durchlauf 4 = 10 (system-over-load bei mir :oops:)
Weil bei x==3 der Zähler um eins erhöht wird und bei x>0 der Zähler zusätzlich noch um den Wert der ersten Zählers erhöht wird.

==> Nimm Dir einen Stift und ein Blatt Papier, schreibe darauf den Wert von x bei jeden Schleifendurchlauf und notiere Dir was mit den Zählern passiert.
 

pl4gu33

Top Contributor
naja mit Meinen System.out. hast du folgende Ausgabe mit while ( x < 4){

Java:
//Erster Durchlauf
Halloooo...
Durchlauf: 0E1 Zähler= 1

//Zweiter Durchlauf
Halloooo...
Durchlauf: 1E1 Zähler= 2
Durchlauf: 1E2 Zähler= 2


//Dritter Durchlauf  --- Hier zählt er ja die 3 von Zähler 1 mit der 2 von Zähler 2 zusammen =5 
//wie ich oben schon beschrieben habe! :)
Halloooo...
Durchlauf: 2E1 Zähler= 3
Durchlauf: 2E2 Zähler= 5

//Vierter Durchlauf ---> hier ist x=3 ! d.h. 
//Er zählt erstmal wieder  E1 hoch auf 4 
//dann geht er in die IF Schleife => x==3 --> dort zählt er E2 hoch auf 6!
//und dann geht er nochmal in die letzte Schleife (X>0) und zählt E2 + E1 => 10 
Halloooo...
Durchlauf: 3E1 Zähler= 4
Durchlauf: 3E2 Zähler= 10
10
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
G Klassen und Objekte Java Basics - Anfänger-Themen 2
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
Orkanson Objekte und Klassen Java Basics - Anfänger-Themen 8
S Objekte mit gleichem Namen in unterschiedlichen Klassen Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
C Klassen/Objekte Verständnis Java Basics - Anfänger-Themen 8
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
A OOP Klassen und Objekte - Diagramme Java Basics - Anfänger-Themen 2
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
S Vererbung Objekte in verwandten Klassen (Kovarianz, Polymorphie) Java Basics - Anfänger-Themen 4
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
J Objekte und Klassen Java Basics - Anfänger-Themen 8
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
X Klassen & Objekte Java Basics - Anfänger-Themen 6
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
J Objekte und Klassen? Java Basics - Anfänger-Themen 12
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Uni (Klassen und Objekte) verwenden Java Basics - Anfänger-Themen 2
D Objekte und Klassen Java Basics - Anfänger-Themen 15
muchodrinko Auf Objekte anderer Klassen zugreifen? Java Basics - Anfänger-Themen 16
T Klassen und Objekte externer Aufruf. Java Basics - Anfänger-Themen 8
M Klassen und Objekte => richtiges Verständnis? Java Basics - Anfänger-Themen 6
A Objekte von abstrakten Klassen? Java Basics - Anfänger-Themen 6
K Objekte/Klassen erweitern ~ Javascript Prototyp Java Basics - Anfänger-Themen 5
M Objekte zwischen Klassen "handeln" Java Basics - Anfänger-Themen 4
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Klassen und Objekte (kopieren) Java Basics - Anfänger-Themen 7
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
K Programm in Klassen/Objekte zerlegen - wie? Java Basics - Anfänger-Themen 3
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
M Klassen, Objekte, Konstruktor Java Basics - Anfänger-Themen 5
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben