2 Klassen - Problem bei Methoden

evil

Aktives Mitglied
Hallo.
Schreiben Sie eine Klasse Weihnachtsteller.java, so dass die folgende Klasse
Nikolaus.java ausgeführt werden kann. Die Klasse kann von der Moodle-Seite der Vorlesung
geladen werden.
// Aufruf mit "java Nikolaus" soll als Ausgabe erzeugen:
// Inhalt von Susis Teller: keks nuesse obst
// Inhalt von Pauls Teller: schokolade marzipan
Java:
class Nikolaus {

  public static void main(String[] args) {
    Weihnachtsteller susisTeller = new Weihnachtsteller();
    Weihnachtsteller paulsTeller = new Weihnachtsteller();
    susisTeller.lege("keks");
    susisTeller.lege("nuesse");
    susisTeller.lege("obst");
    paulsTeller.lege("schokolade");
    paulsTeller.lege("marzipan");
    Out.print("Inhalt von Susis Teller: ");
    susisTeller.ausgabe();  
    Out.print("Inhalt von Pauls Teller: ");
    paulsTeller.ausgabe(); 
  }

}

Ihre Klasse sollte also ein Attribut für den Tellerinhalt sowie geeignete Methoden lege und
ausgabe enthalten. Hinweis: Das Attribut kann als String-Array der Länge 10 realisiert werden,
d.h., Sie dürfen davon ausgehen, dass maximal 10 Naschereien auf einen Teller gelegt
werden. In diesem Fall benötigen Sie ein weiteres Attribut, das anzeigt, wieviele Naschereien
sich momentan auf dem Teller befinden, also wo der nächste freie Platz ist. (Andere Möglichkeiten
zur Realisierung des Attributs sind zulässig.)

Ich hatte nun so angefangen.
Java:
class Weihnachtsteller {
	StringBuffer sb;
	void lege(String stueck) {

Leider stehe ich auf dem Schlauch und weiß nicht, wie ich ihm nun sage, dass er mir die Sachen ausgibt, die auf meinem Array angefordert werden. Weil ich ja die unterscheidung zwischen Susi und Paul machen muss.
 
Zuletzt bearbeitet von einem Moderator:

Sempah

Bekanntes Mitglied
Du hast einen kleinen Denkfehler. susisTeller und paulsTeller sind Objekte von deiner Klasse Weihnachtsteller.
Du musst nirgends unterscheiden ob es jetzt Susi oder Paul ist (also sowas wie if (susisTeller ....)
Du weisst deinem Objekt ja auch explizit Nascherein zu.

Andere Möglichkeiten
zur Realisierung des Attributs sind zulässig

Dann wäre eine List z.B. intelligenter als ein Array:

Java:
public class Weihnachtsteller {
	
	ArrayList<String> naschereien = new ArrayList<String>();
	
	public void lege(String nascherei) {
		naschereien.add(nascherei);
	}
	
	public void ausgabe() {
		for (String nascherei : naschereien) {
			System.out.print(nascherei + " ");
		}
		System.out.println("");
	}

}
 

evil

Aktives Mitglied
Vielen Dank.

Hab mir das grad mal angeschaut, hat dieses ArrayList die selbe Funktion wie ein Stringbuffer? Kann mir das nicht so ganz daraus erschließen, da ich das nicht kenne.
 

Sempah

Bekanntes Mitglied
Nein.

ArrayList (Java 2 Platform SE v1.4.2)

StringBuffer (Java 2 Platform SE v1.4.2)

Beim StringBuffer würdest du ja via append, deine Nascherei anhängen und müsstest um später drüber iterieren zu können z.B. ein , oder so zusätzlich appenden. Sehr unschön.

Eine ArrayList ist dagegen eine Collection, wesentlicher Vorteil gegenüber einem Array ist, dass man die Größe ständig ändern kann bzw. man vorher keine fixe Größe angeben muss.
 

Der Müde Joe

Top Contributor
>hat dieses ArrayList die selbe Funktion wie ein Stringbuffer?

Nein. Zudem sollte man StringBuilder und nicht StringBuffer benutzen. Die haben die gleich Methode nur nicht synchroniziert.

Eine List (speziell ArrayList) ist ein Sammlung von Elementen. In diesem Fall Strings. Element 1: "keks", Element 2: "banane" ...
StringBuilder ist ein Wrapper um Strings zusammenzusetzten. "keks" + "banane" (append) = "keksbanane"
 

Oli

Top Contributor
Hallo,

also so wie es aussieht, belegst du gerade eine Java - Vorlesung, vermutlich die erste. Deswegen sind die Ratschläge mit ArrayList und Vektoren net so prickelnd.

Wenn ich es richtig verstehe, so möchte dir dein Dozent vermitteln wie man mit Arrays umgeht.

Deswegen solltest du es so machen:

Java:
	public class Weihnachtsteller {
		String[] tellerInhalt = new String[10];

		public void legeAufTeller(String suessigkeit) {
			for (int i = 0; i < tellerInhalt.length; i++) {
				if (tellerInhalt[i] == null || tellerInhalt[i].equals("")) {
					tellerInhalt[i] = suessigkeit;
					break;
				}
			}
		}

		public void ausgabe() {
			for (int i = 0; i < tellerInhalt.length; i++) {
				System.out.print(" " + tellerInhalt[i] + " ");
			}
			System.out.println();
		}
	}

Grüße Oli
 

Oli

Top Contributor
Java:
public class Nikolaus {

	public static void main(String[] args) {
		Weihnachtsteller susisTeller = new Weihnachtsteller();
		Weihnachtsteller paulsTeller = new Weihnachtsteller();
		susisTeller.lege("keks");
		susisTeller.lege("nuesse");
		susisTeller.lege("obst");
		paulsTeller.lege("schokolade");
		paulsTeller.lege("marzipan");
		System.out.println("Inhalt von Susis Teller: ");
		susisTeller.ausgabe();
		System.out.println("Inhalt von Pauls Teller: ");
		paulsTeller.ausgabe();
	}

}
class Weihnachtsteller {
	String[] tellerInhalt = new String[10];

	public void lege(String suessigkeit) {
		for (int i = 0; i < tellerInhalt.length; i++) {
			if (tellerInhalt[i] == null || tellerInhalt[i].equals("")) {
				tellerInhalt[i] = suessigkeit;
				break;
			}
		}
	}

	public void ausgabe() {
		for (int i = 0; i < tellerInhalt.length; i++) {
			System.out.print(" " + tellerInhalt[i] + " ");
		}
		System.out.println();
	}
}


Ich habe lege() mit legeAufTeller() ersetzt...

Das hätte man erkennen können.
 

halfbaked

Mitglied
Code:
C:\DoXXXX\Desktop>javac weihnachtsteller.java
weihnachtsteller.java:4: class Nikolaus is public, should be declared in a file
named Nikolaus.java
public class Nikolaus {
       ^
1 error

Bekomme den Fehler beim kompilieren.
 

Sempah

Bekanntes Mitglied
Achja damit du kein "null" ausgibst, könntest du dein Arrayinhalt auch bei der Ausgabe überprüfen:

Java:
System.out.print(tellerInhalt[i] == (null) ? " " : tellerInhalt[i] + " ");
 

halfbaked

Mitglied
public..

wenn ich nikolaus kompiliere geht es aber auch nicht...

Code:
C:\XXXDesktop>javac Nikolaus.java
Nikolaus.java:2: class, interface, or enum expected
<pre><p>// Aufruf mit &quot;java Nikolaus&quot; soll als Ausgabe erze
^
Nikolaus.java:10: illegal start of expression
    susisTeller.lege(&quot;keks&quot;);
                     ^
Nikolaus.java:10: ')' expected
    susisTeller.lege(&quot;keks&quot;);
                          ^
Nikolaus.java:10: not a statement
    susisTeller.lege(&quot;keks&quot;);
                               ^
Nikolaus.java:10: illegal start of expression
    susisTeller.lege(&quot;keks&quot;);
                                     ^
Nikolaus.java:11: illegal start of expression
    susisTeller.lege(&quot;nuesse&quot;);
                     ^
Nikolaus.java:11: ')' expected
    susisTeller.lege(&quot;nuesse&quot;);
                          ^
Nikolaus.java:11: not a statement
    susisTeller.lege(&quot;nuesse&quot;);
                                 ^
Nikolaus.java:11: illegal start of expression
    susisTeller.lege(&quot;nuesse&quot;);
                                       ^
Nikolaus.java:12: illegal start of expression
    susisTeller.lege(&quot;obst&quot;);
                     ^
Nikolaus.java:12: ')' expected
    susisTeller.lege(&quot;obst&quot;);
                          ^
Nikolaus.java:12: not a statement
    susisTeller.lege(&quot;obst&quot;);
                               ^
Nikolaus.java:12: illegal start of expression
    susisTeller.lege(&quot;obst&quot;);
                                     ^
Nikolaus.java:13: illegal start of expression
    paulsTeller.lege(&quot;schokolade&quot;);
                     ^
Nikolaus.java:13: ')' expected
    paulsTeller.lege(&quot;schokolade&quot;);
                          ^
Nikolaus.java:13: not a statement
    paulsTeller.lege(&quot;schokolade&quot;);
                                     ^
Nikolaus.java:13: illegal start of expression
    paulsTeller.lege(&quot;schokolade&quot;);
                                           ^
Nikolaus.java:14: illegal start of expression
    paulsTeller.lege(&quot;marzipan&quot;);
                     ^
Nikolaus.java:14: ')' expected
    paulsTeller.lege(&quot;marzipan&quot;);
                          ^
Nikolaus.java:14: not a statement
    paulsTeller.lege(&quot;marzipan&quot;);
                                   ^
Nikolaus.java:14: illegal start of expression
    paulsTeller.lege(&quot;marzipan&quot;);
                                         ^
Nikolaus.java:15: illegal start of expression
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
              ^
Nikolaus.java:15: ')' expected
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
                   ^
Nikolaus.java:15: ';' expected
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
                              ^
Nikolaus.java:15: ';' expected
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
                                           ^
Nikolaus.java:15: not a statement
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
                                              ^
Nikolaus.java:15: illegal start of expression
    Out.print(&quot;Inhalt von Susis Teller: &quot;);
                                                   ^
Nikolaus.java:17: illegal start of expression
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
              ^
Nikolaus.java:17: ')' expected
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
                   ^
Nikolaus.java:17: ';' expected
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
                              ^
Nikolaus.java:17: ';' expected
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
                                           ^
Nikolaus.java:17: not a statement
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
                                              ^
Nikolaus.java:17: illegal start of expression
    Out.print(&quot;Inhalt von Pauls Teller: &quot;);
                                                   ^
Nikolaus.java:21: class, interface, or enum expected
}</p></pre>→
 ^
34 errors
 

Sempah

Bekanntes Mitglied
Erstell dir eine Datei namens Nikolaus.java und füge diesen Code kompl. ein:

Java:
public class Nikolaus {

	public static void main(String[] args) {
		Weihnachtsteller susisTeller = new Weihnachtsteller();
		Weihnachtsteller paulsTeller = new Weihnachtsteller();
		susisTeller.lege("keks");
		susisTeller.lege("nuesse");
		susisTeller.lege("obst");
		paulsTeller.lege("schokolade");
		paulsTeller.lege("marzipan");
		System.out.println("Inhalt von Susis Teller: ");
		susisTeller.ausgabe();
		System.out.println("Inhalt von Pauls Teller: ");
		paulsTeller.ausgabe();
	}

}
class Weihnachtsteller {
	String[] tellerInhalt = new String[10];

	public void lege(String suessigkeit) {
		for (int i = 0; i < tellerInhalt.length; i++) {
			if (tellerInhalt[i] == null || tellerInhalt[i].equals("")) {
				tellerInhalt[i] = suessigkeit;
				break;
			}
		}
	}

	public void ausgabe() {
		for (int i = 0; i < tellerInhalt.length; i++) {
			System.out.print(" " + tellerInhalt[i] + " ");
		}
		System.out.println();
	}
}


Ich habe lege() mit legeAufTeller() ersetzt...

Das hätte man erkennen können.
 

Oli

Top Contributor
Also den Code den ich gepostet habe, ist genau so kompilierbar und funktioniert.

Java:
public class Nikolaus {

	public static void main(String[] args) {
		Weihnachtsteller susisTeller = new Weihnachtsteller();
		Weihnachtsteller paulsTeller = new Weihnachtsteller();
		susisTeller.lege("keks");
		susisTeller.lege("nuesse");
		susisTeller.lege("obst");
		paulsTeller.lege("schokolade");
		paulsTeller.lege("marzipan");
		System.out.println("Inhalt von Susis Teller: ");
		susisTeller.ausgabe();
		System.out.println("Inhalt von Pauls Teller: ");
		paulsTeller.ausgabe();
	}
}

class Weihnachtsteller {
	String[] tellerInhalt = new String[10];


	public void lege(String suessigkeit) {
		for (int i = 0; i < tellerInhalt.length; i++) {
			if (tellerInhalt[i] == null || tellerInhalt[i].equals("")) {
				tellerInhalt[i] = suessigkeit;
				break;
			}
		}
	}

	public void ausgabe() {
		for (int i = 0; i < tellerInhalt.length; i++) {
			System.out.print(" " + tellerInhalt[i] + " ");
		}
		System.out.println();
	}
}


Wenn es beim Copy/Paste schon hapert, kann ich auch nimmer helfen...
 

evil

Aktives Mitglied
Ok.. Jetzt kann ich es ausführen. Aber ich bekomme als Ergebnis folgendes:
Code:
Inhalt von Susis Teller: keks nuesse obst null null null null null null null 
Inhalt von Pauls Tekker; schokolade marzipan null null null null null null null null
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem mit Klassen und Methoden Java Basics - Anfänger-Themen 7
J Methoden/Klassen Problem Java Basics - Anfänger-Themen 9
T Methoden / Klassen Problem Java Basics - Anfänger-Themen 11
frau-u Problem mit Klassen und Vererbung - benutzen von Methoden Java Basics - Anfänger-Themen 2
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
J Klassen Problem Java Basics - Anfänger-Themen 8
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
B Erste Schritte Problem bei der Verknüpfung von zwei klassen Java Basics - Anfänger-Themen 8
S Problem mit Klassen-/Methodenstruktur Java Basics - Anfänger-Themen 8
G Klassen Problem mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Erste Schritte Problem mit Klassen. Java Basics - Anfänger-Themen 15
P Klassen Klassen mit Array Problem Java Basics - Anfänger-Themen 4
1 Klassen Problem Java Basics - Anfänger-Themen 6
megachucky regex-Problem ( mit den Klassen Matcher / Pattern) --> XML prüfen Java Basics - Anfänger-Themen 11
F Klassen problem Java Basics - Anfänger-Themen 39
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
D Problem mit Klassen Bsp. Java Basics - Anfänger-Themen 3
A Taschenrechner - Problem mit zwei Klassen Java Basics - Anfänger-Themen 6
J Problem mit inneren Klassen und Klassenvariablen Java Basics - Anfänger-Themen 11
M Problem mit dem Klassen aus dem java.io Paket Java Basics - Anfänger-Themen 9
S Brauche Unterstützung bei Klassen-Problem. Java Basics - Anfänger-Themen 9
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
G Klassen Problem Java Basics - Anfänger-Themen 12
M Klassen-Problem Java Basics - Anfänger-Themen 5
K Wiederwerwenbare Klassen problem Java Basics - Anfänger-Themen 3
L Suche Hilfe , Problem mit Vektoren und klassen Java Basics - Anfänger-Themen 21
G Problem mit Objekten und Klassen. Java Basics - Anfänger-Themen 2
G Problem mit zwei Klassen Java Basics - Anfänger-Themen 8
G Klassen Problem Java Basics - Anfänger-Themen 12
G Problem mit Klassen Java Basics - Anfänger-Themen 32
A problem: importieren von eigenen klassen Java Basics - Anfänger-Themen 3
G Nochmal Problem mit Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 3
G Problem mit PHP Klassen Java Basics - Anfänger-Themen 3
P Externe Klassen Problem - Eclipse Java Basics - Anfänger-Themen 4
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
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
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
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
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
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
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
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
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
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben