Veröffentlicht 19. März 201213 j Guten Tag, ich habe mir einen Skript raus gesucht, um meinen eigenen etwas zu verbessern. Allerdings habe ich nun ein Problem mit den Objekten. Code: import sum.kern.*; /** * @author Philip WOLtersdorf * @version 1.0 */ public class HP { // Objekte Bildschirm derBildschirm; Tastatur dieTastatur; Maus dieMaus; Stift hatStift; Knopf Knopf; Knopf Knopf2; Figur dummy; Lokomotive dieLok; PersonenWaggon derPer; OelWaggon derOel; HolzWaggon derHol; // Konstruktor public HP() { derBildschirm = new Bildschirm(333,333); dieTastatur = new Tastatur(); dieMaus = new Maus(); hatStift = new Stift(); Knopf = new Knopf(derBildschirm.breite()/3-25 ,derBildschirm.hoehe()-50,25,50,dieMaus,'E'); Knopf2 = new Knopf(derBildschirm.breite()/3*2-25,derBildschirm.hoehe()-50,25,50,dieMaus,'S'); dieLok = new Lokomotive(derBildschirm.breite()/4,derBildschirm.hoehe()/2,dieMaus); derPer = new PersonenWaggon(derBildschirm.breite()/3-50,derBildschirm.hoehe()/8,dieMaus); derOel = new OelWaggon(derBildschirm.breite()/3*2-50,derBildschirm.hoehe()/8,dieMaus); derHol = new HolzWaggon(derBildschirm.breite()/3*3-50,derBildschirm.hoehe()/8,dieMaus); dieLok.zeichneDich(); dummy = dieLok; } // Dienste public void fuehreAus() { // Aktionsteil hatStift.bewegeBis(0,derBildschirm.hoehe()/4); hatStift.runter(); hatStift.bewegeBis(derBildschirm.breite(),derBildschirm.hoehe()/4); hatStift.hoch(); hatStift.bewegeBis(0,derBildschirm.hoehe()/4+10); hatStift.runter(); hatStift.bewegeBis(derBildschirm.breite(),derBildschirm.hoehe()/4+10); hatStift.hoch(); hatStift.bewegeBis(0,(derBildschirm.hoehe()/4)*3); hatStift.runter(); hatStift.bewegeBis(derBildschirm.breite(),(derBildschirm.hoehe()/4)*3); hatStift.hoch(); hatStift.bewegeBis(0,((derBildschirm.hoehe()/4)*3)-10); hatStift.runter(); hatStift.bewegeBis(derBildschirm.breite(),((derBildschirm.hoehe()/4)*3)-10); hatStift.hoch(); do { if(dieMaus.doppelKlick()) { if(derPer.getroffen()) { dummy = dieLok; while (dummy.nenneNachfolger() != null) { dummy = dummy.nenneNachfolger(); } dummy.kuppelAn(new PersonenWaggon(0,0,dieMaus)); do { dieLok.bewegeDich(-1); }while (dummy.nennehPosition() > derBildschirm.breite()/2); } if(derOel.getroffen()) { dummy = dieLok; while (dummy.nenneNachfolger() != null) { dummy = dummy.nenneNachfolger(); } dummy.kuppelAn(new OelWaggon(0,0,dieMaus)); do { dieLok.bewegeDich(-1); }while (dummy.nennehPosition() > derBildschirm.breite()/2); } if(derHol.getroffen()) { dummy = dieLok; while (dummy.nenneNachfolger() != null) { dummy = dummy.nenneNachfolger(); } dummy.kuppelAn(new HolzWaggon(0,0,dieMaus)); do { dieLok.bewegeDich(-1); }while (dummy.nennehPosition() > derBildschirm.breite()/2); } if(Knopf.getroffen()) { Knopf.aktiviere(); dummy = dieLok; if(dieLok.nenneNachfolger() != null) { while (dummy.nenneNachfolger().nenneNachfolger() != null) { dummy = dummy.nenneNachfolger(); } dummy.entferneNachfolger(); do { dummy = dieLok; while (dummy.nenneNachfolger() != null) { dummy = dummy.nenneNachfolger(); } dieLok.bewegeDich(+1); }while (dummy.nennehPosition() < derBildschirm.breite()/2); } Knopf.deaktiviere(); } if(Knopf2.getroffen()) { Knopf2.aktiviere(); do { dieLok.bewegeDich(+5); }while (dieLok.nennehPosition() < derBildschirm.breite()/2); do { dieLok.bewegeDich(-1); }while (dummy.nennehPosition()+dummy.nenneLaenge()+1 > 0); Knopf2.deaktiviere(); } } }while (dummy.nennehPosition()+dummy.nenneLaenge()+1 > 0); // Aufraeumen dieTastatur.gibFrei(); derBildschirm.gibFrei(); dieMaus.gibFrei(); hatStift.gibFrei(); Knopf.gibFrei(); Knopf2.gibFrei(); derPer.gibFrei(); derOel.gibFrei(); derHol.gibFrei(); dieLok.gibFrei(); } } Folgender Fehler kommt: Cannot find symbol - class Knopf Wo liegt der Fehler? MfG
19. März 201213 j Der Fehler liegt am fehlenden Verständnis dessen, was der Code macht. Die Fehlermeldung besagt, dass die Klasse nicht gefunden wird/ existiert.
19. März 201213 j Aber am Anfang wird doch angegeben welches Objekt was darstellen soll. Wie kann ich das Problem denn im Code ändern / verbessern?
19. März 201213 j Dass kann ja schon sein. Dein Compiler glaubt dir aber nicht. Der findet die Klasse nicht im Classpath.
19. März 201213 j Das sagt mir jetzt leider nicht sehr viel, zur Verbesserung. Ich weiss nun das er die Klasse nicht erkennt. Aber wie löse ich das Problem?
19. März 201213 j Pack die Klasse in dein Classpath. Mache die Klasse public, wenn sie in einem anderen Paket liegt. Erzeuge die Klasse. Such dir was aus.
19. März 201213 j Der Befehl wird ausschließlich in der Datei benutzt. Und was genau soll mein Classpath sein? Ich komme leider nicht weiter.
19. März 201213 j Und was genau soll mein Classpath sein? Klassenpfad bitte fange erst einmal damit an, dass Du verstehst wie Java Klassen / Pakete etc strukturiert und instantiiert, ebenso was Klassen und was Objekte sind.
19. März 201213 j Das Classpath der Klassenpfad ist ist mir schon klar, danke aber für das dumm halten. Wir haben nichts anderes mit den Klassen im Unterricht gemacht. Nur mit dem Stift zum beispiel. Stift hatStift; und dann erkennt er den Stift an. Und so müsste es doch mit dem Knopf doch auch gehen, eigentlich...
19. März 201213 j und dann erkennt er den Stift an. Und so müsste es doch mit dem Knopf doch auch gehen, eigentlich... Den Quellcode den Du postest benutzt keine standardisierten Klassen / Pakete, somit ist das alles irgendwie individuell entwickelt. Und wenn Du weisst wofür der Classpath gedacht ist, was hätte es Dich daran gehindert nach zu schauen, ob die von Dir verwendeten Klassen vorhanden sind
19. März 201213 j "Knopf" gibt es in der Klasse von BlueJ nicht. Ist also ein eigener Befehl. Wir hatten bisher nur die Varianten mit double, private, protected, wovon hier nichts zutreffend passen würde. Deshalb komme ich im moment nicht weiter MfG
19. März 201213 j Knopf ist wie HP eine Klasse, die nicht zum Umfang der mit Java ausgelieferten Klassen gehört. Inhaltlich gehört sie wohl in das gleiche Paket wie Bildschirm, Tastatur, Maus und Stift. Damit sind es wahrscheinlich Klassen die durch deinen Lehrer(?) bereitgestellt werden bzw. von der Person, die den Quellcode "bereitgestellt" hat.
19. März 201213 j Leider nein, sonst würde meine Frage ja nicht bestehen. Wir haben die Klasse "Figur" (Abstract) bekommen und das "Grundgerüst" vom HP. Sprich public void fuehreAus() etc. Den inhalt müssen wir mit einigen Tipps selbst erstellen. Genau deshalb komme ich nicht weiter. Die Wagen habe ich bereits alle fertig, das einzige was gerade noch am scheitern ist ist das HP. mfg
19. März 201213 j Suche die Datei, die die Klasse HolzWaggon enthält und erstelle analog die Klasse Knopf im gleichen Verzeichnis mit den Methoden, die du benötigst.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.