Kann mir jemand helfen habe einen Programmierfehler im code und weiß nicht wieso da ich das nach einem Tutorial mache kennt sich jemand aus?

...komplette Frage anzeigen Hier ist der Quellcode - (programmieren, Java, Programmierfehler)

7 Antworten

Okay, das sind die einzelnen Fehler im Code:

  • Hinter new Spielwelt(100,200,new Spielfigur()) muss ein ';'
  • Zuweisungen von Werten laufen über '=' nicht '=='. 
    Also welt1.breite = 100 und nicht welt1.breite == 100
  • Du führst den Code außerhalb von irgendwelchen Methoden aus. Das geht nicht. Du kannst welt1 zwar in der Klasse deklarieren, die Zuweisung der Werte muss jedoch innerhalb einer Methode stehen.

Du musst bei dem Tutorial etwas mehr aufpassen.

Nur weil da ein Block Code steht, kannst du den nicht einfach so in dein Programm reinschreiben, das führt unweigerlich zu Fehlern.

So, wie du das da programmiert hast, ergibt das keinen Sinn. 
Im Tutorial wird dir an dieser Stelle beigebracht, wie du eigene Klassen erstellst. Diese Klassen kannst du später in deinem Programm weiterverwenden, wobei du dann die erstellten Attribute und Methoden nutzen kannst.

In so einer Klasse, ist jedoch die public static main Methode vollkommen Fehl am Platz!

Im Tutorial steht auch nicht, dass du eine schreiben sollst ;)

Es wird erklärt, wie du deiner Klasse einen dynamischen Konstruktor geben kannst. Diesen musst du jedoch in einer ausführbaren Klasse aufrufen.
Der Teil, in dem welt1.breite == 100 steht, zeigt dir nur, welche Werte die Attribute NACH dem Aufruf des Konstruktors haben. 

Wenn du dein gewünschtes Resultat haben willst, benötigst du also ZWEI Klassen. Die erste ist die Spielwelt:

public class Spielwelt {
  /*Deklaration der einzelnen Attribute*/
  private int breite;
  private int hoehe;
  private Spielfigur figur; 

  /*Leerer Konstruktor, wird dieser aufgerufen,
  erhalten die Attribute die unten stehenden Werte*/
  public Spielwelt(){
    this.breite = 640;
    this.hoehe = 320;
    this.figur = new Spielfigur();
  }
  
  /*Dynamischer Konstruktor, wird dieser aufgerufen,
  erhalten die Attribute die Werte aus den Parametern*/
  public Spielwelt(int breite, int hoehe, Spielfigur figur){
    this.breite = breite;
    this.hoehe = hoehe;
    this.figur = figur;
  }

  /*Methoden zum Setzen und Lesen von Attributen*/
  public int getHoehe(){
    return this.hoehe;
  }

  public void setHoehe(int neueHoehe){
    this.hoehe = neueHoehe;
  }
}

Das ist die Klasse Spielwelt. Wenn du jetzt, wie in deinem Beispiel die Höhe ausgeben willst, brauchst du eine ausführbare Klasse:

public class MainClass(){
  /*Main Methode zum Ausführen*/
  public static void main(String args[]){
    /*Erzeugung einer neuen Spielwelt, mit Hilfe des
    dynamischen Konstruktors*/
    Spielwelt welt = new Spielwelt(100,200, new Spielfigur);
    
    /*Ausgeben der Höhe*/
    int weltHoehe = welt.getHoehe();
    System.out.println(weltHoehe);
  }
}


Also, zusammengefasst:
Nur eine Klasse mit Main-Methode. Diese wird ausgeführt. Klassen, die du später verwenden willst benötigen einen oder mehrere Konstruktoren, sowie die wichtigen Attribute und ihre Getter- und Setter-Methoden.

Falls du noch Fragen hast, gerne antworten :)

MfG, TheErdnuss

Du versucht ein Objekt außerhalb einer Methode zu instanziieren und anschließend zu benutzen. Das geht nicht.

Du kannst zwar Instanzvariablen und Klassenvariablen direkt instanziieren aber nicht außerhalb einer Methode benutzen. 

Prüfe außerdem, ob du das richtige Package verwendest und kopiere nicht einfach nur Code von einem Tutorial. Lad dir lieber das komplette Projekt herunter und versuche den Code zu verstehen.

Dann schreib den Code für dein eigenes Projekt aus dem Gedächnis heraus neu. Anders lernst du es nicht... 

Also so wie es auf dem Bild aussieht schreibst du den code in die klasse (Der markierte code). Du musst den auch in eine funktion packen! Wäre gut wenn du uns die fehlerrmeldung sagen könntest

97adi 07.06.2016, 08:35

Bei der obersten fehlerhaft markierten Zeile sagt er: ; expected, ist aber beim tutorial ebenfalls nicht vorhanden und bei den anderen drei fehlermeldungen darunter sagt er: package welt1 does not exist, <identifier> expected und invalid method declaration; return type required sagt er noch beim letzten der drei


0
Zindea 07.06.2016, 08:49
@97adi

Da hast du es. Code wo du erstmal eine funktion deklarieren musst

0
97adi 07.06.2016, 08:56
@Zindea

Was baut man da den zum Beipiel für eine Funktion ein da ich erst frisch angefangen habe und diesem Tutorial folge ist es für mich noch nicht möglich da jetzt was einzufügen was nicht im tutorial steht

0
Zindea 07.06.2016, 13:58
@97adi

Pack den Code in die Main methode

0

Bei der Zeile mit Spielwelt ... fehlt das ;. Ansonsten gehen Zuweisungen mit = nicht mit ==!

triopasi 07.06.2016, 09:03

Außerdem: Englische Variablen und Methodennamen nutzen! Normalerweise stehen Klassenattribute oben, dann der Konstruktor und dann die sonstigen Methoden.

0
97adi 07.06.2016, 09:05
@triopasi

bringt nix die einzige meldung die verschwindet ist die oberste die unteren drei bleiben fehlerhaft

0

Der komplette markierte Teil unten muss in die public static void main

Und nur ein = bei dem unterwelltem. == Überprüft, ob etwas gleich ist und gibt eine bool zurück.

Fehlt in der ersten unterwellten zeile nicht ein semi-colon?

Was möchtest Du wissen?