www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Formale Sprachen" - Java Klasse nicht kompilierbar
Java Klasse nicht kompilierbar < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Java Klasse nicht kompilierbar: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 00:00 Mo 15.06.2009
Autor: snp_Drake

Aufgabe
Implementieren Sie eine Klasse Speisekarte, die eine Speisekarte eines Restaurants realisiert. Gehen Sie
dabei wie folgt vor:
1. Implementieren Sie eine Klasse Speise. Eine Speise besitzt einen Namen und einen Preis, die ¨uber
den Konstruktor initialisiert werden. Die Klasse besitzt eine Methode public String toString(),
die Name und Preis der Speise zur¨uckliefert.
2. Implementieren Sie eine Klasse Speisekarte, die verschiedene Speisen enth¨alt. Eine Speisekarte
kann neue Speisen aufnehmen, vorhandene Speisen entfernen und s¨amtliche Speisen inklusive Preis
auf der Konsole ausgeben. Verwenden Sie zur Verwaltung der Speisen den generischen Datentyp
ArrayList<T>, der in der Java-API unter
http://java.sun.com/javase/6/docs/api/
dokumentiert ist.
3. Implementieren Sie eine Klasse TestSpeisekarte zum Testen Ihres Programms. Verwenden Sie
dazu mindestens 5 Speisen.

Also, ich hab das Problem, dass der folgende Quellcode nicht compilierbar ist und ich nicht weiß warum. Also zuerst mal die Klasse Speise (ist noch zu compilieren):

public class Speise{
String name;
String preis;
Speise (String name, String preis){
this.name=name;
this.preis=preis;
}
public String toString(){
return name+preis;
}
}

Dann Speisekarte und da spuckt er immer Fehler aus:

import java.util.ArrayList;

public class Speisekarte <T> extends Speise{
        Speise value;                             //!
ArrayList<Speise> speisen;

Speisekarte(Speise aSpeise){
        speisen = new ArrayList<Speise>();         //! "speisen"-Zeiger zeigt auf neues Element
        speisen.value = aSpeise;                   //! "speisen"-ZeigerElement = aSpeise
    }

void addSpeise (Speise speisen){
speisen.add(speisen);
}

void removeSpeise (Speise speisen){
speisen.remove(speisen);
}

void ausgeben (){
System.out.println(speisen);
}
}

Kann mir jemand helfen?

        
Bezug
Java Klasse nicht kompilierbar: Antwort
Status: (Antwort) fertig Status 
Datum: 18:28 Mo 15.06.2009
Autor: fabba


>  Also, ich hab das Problem, dass der folgende Quellcode
> nicht compilierbar ist und ich nicht weiß warum. Also
> zuerst mal die Klasse Speise (ist noch zu compilieren):
>  
> public class Speise{
>   String name;
>   String preis;
>   Speise (String name, String preis){
>   this.name=name;
>   this.preis=preis;
>   }
>   public String toString(){
>   return name+preis;
>   }
>  }

"nicht compilierbar" ist keine Fehlermeldung.

... und bei mir geht's. Mit welchem Aufruf versuchst Du es?


Die Klasse sieht inhaltlich gut aus, auch wenn ich den Preis nicht unbedingt als String speichern würde.


>  
> Dann Speisekarte und da spuckt er immer Fehler aus:

"immer Fehler" ist keine Fehlermeldung. Besser angeben, was Du tust, was Du erwartest, was Du stattdessen erhälst. Das zeigt, dass Du Dir Gedanken machst (und Gedanken Machen hilft oft schon um das Problem von alleine zu lösen) und erleichtert das Helfen.

>  
> import java.util.ArrayList;
>  
> public class Speisekarte <T> extends Speise{

Eine Speisekarte ist eine Art von Speise? Das drückt die extends-Beziehung aus.
Es gibt verschiedene Typen von Speisekarten? Z. B. Integer-Speisekarten? Das drückt das <T> aus.


>          Speise value;                             //!

Eine Speisekarte hat einen Wert? Und der ist eine Speise? Versteh' ich nicht.

>   ArrayList<Speise> speisen;

Sehr gut. Liste aller Speisen auf der Karte.

>  
> Speisekarte(Speise aSpeise){

Hier tritt bei mir ein Fehler auf, hat aber mit dem überflüssigen <T> und extends Speise zu tun


>          speisen = new ArrayList<Speise>();         //! "speisen"-Zeiger zeigt auf neues Element

Hier hab ich keinen Fehler. Sieht auch gut aus. Die Speisenliste wird mit einer leeren Liste initialisiert.

>          speisen.value = aSpeise;                   //! "speisen"-ZeigerElement = aSpeise

Das ergibt wenig Sinn. Eine Liste hat keinen Wert. Eine add-Methode könnte sie haben um die entsprechende Speise dort hinzuzufügen. Unten machst Du's richtig.

aSpeise soll anfangs als einzige Speise auf der Karte stehen?


>      }
>  
> void addSpeise (Speise speisen){
>   speisen.add(speisen);
>   }
>  
> void removeSpeise (Speise speisen){
>   speisen.remove(speisen);
>   }

Gut, aber Du vergibst den Namen speisen doppelt. Die Liste oben heißt schon so. Und damit kommt er gar nicht klar (this.speisen.remove(speisen) würde gehen, aber speisen ist eh ein blöder Name für nur eine Speise)


>  
> void ausgeben (){
>   System.out.println(speisen);
>   }
>  }



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Formale Sprachen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]