Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, warum gibt mein Programm die Stärke meines Zauberstabs nicht zurück?
Java:
public class main{
public static void main(String[] args) {
Zauberstab zauberstab1 = new Zauberstab();
Zauberstab zauberstab2 = new Zauberstab();
int zauberstab1.ZauberstabStrength = 8;
String zauberstab1.ZauberstabFarbe = "Blau";
int zauberstab2.ZauberstabStrength = 5;
String zauberstab2.ZauberstabFarbe = "Gruen";
public void Staerke(){
int getzauberstab1Strength(){
return this.zauberstab1Strength;
}
}
Well so ziemlich jede Zeile ab Zeile 7 deines Programms mehrere Syntaxfehler hat. Du solltest dir zu allererst einmal ein Grundlagenbuch zu Java holen und das durcharbeiten. Grundlagen wie "was ist eine Variable?", "wie deklariere ich eine Variable?", "wie deklariere ich eine Methode?", "was ist eine Instanzmethode?", etc.
Das Problem ist, dass es sehr schnell in eine Erläuterung aller Grundlagen ausartet. Und das sprengt das Forum nun einmal.
Ein Problem ist, dass Methoden direkt in der Klasse sein müssen und nicht innerhalb anderer Methoden.
Du hast eine Klasse main (Tipp: Namensgebung in Java besagt, dass Klassen mit einem großen Buchstaben anfangen sollten). In der kommt dann die Methode main - das ist ok.
Du erzeugst zwei Instanzen von Zauberstab - auch noch ok.
Dann der Zugriff auf die Instanzvariable - mit dem int davor wäre es eine Deklaration einer lokalen Variable - dann dürfte der Bezeichner aber keinen . enthalten. Aber Du willst ja offensichtlich nur auf die Instanzvariable zugreifen: Da muss dann das int davor weg.
(Tipp: Instanzvariablen werden am Anfang klein geschrieben in Java, Zugriff auf instanzvariablen in anderen Klassen wenn möglich nur per Setter!)
Dann kommt die Methode Stärke - aber da ist die Methode main noch nicht beendet. (Tipp: Methoden fangen klein an, enthalten ein Verb und besagen, was da passiert. Ein Substantiv ist nicht gut!)
In Stärke dann noch eine weitere Methode - das geht natürlich ebenso wenig ...
Und dann stimmt am Ende auch die Anzahl der { nicht mit der Anzahl der } überein (Habe ich jetzt nicht gezählt, aber so auf den ersten Blick sieht es danach aus.)
public class Zauberstab {
private int strenght;
private String color;
public Zauberstab(int strength, String color) {
this.strength = strength;
this.colot = color;
}
public int getStrength() {
return strength;
}
public String getColor() {
return color;
}
}
Java:
public class Main {
public static void main(String[] args) {
Zauberstab zauberstab1 = new Zauberstab(12, "grün");
Zauberstab zauberstab2 = new Zauberstab(5, "rot");
System.out.println(zauberstab1.getStrength());
System.out.println(zauberstab2.getStrength());
}
}
public class main{ // Kein "echter" Fehler, aber Klassennamen sollen mit einem Großbuchstaben beginnen
public static void main(String[] args) {
Zauberstab zauberstab1 = new Zauberstab();
Zauberstab zauberstab2 = new Zauberstab();
// durch das vorangestellte "int" teilst du dem Compiler mit, dass du eine NEUE int-Variable
// erzeugen möchtest. Du möchtest aber auf eine Instanzvariable von Zauberstab zugreifen.
int zauberstab1.ZauberstabStrength = 8;
// dgl. nur mit dem Variablentypen String
String zauberstab1.ZauberstabFarbe = "Blau";
// gleicher Fehler wie oben beschrieben
int zauberstab2.ZauberstabStrength = 5;
String zauberstab2.ZauberstabFarbe = "Gruen";
// hier deklarierst du eine neue Methode "Staerke"
// es gilt, dass Variablen- und Methodennamen mit einem Kleinbuchstaben beginnen sollen
// du befindest dich allerding noch in der main()-Methode
// und innerhalb einer Methode, können keine anderen Methoden deklariert werden.
public void Staerke() {
// hier deklarierst du eine weitere neue Methode "getZauberstab1Strength"
// wie oben, es können keine Methoden innerhalb von anderen Methoden deklariert werden.
int getzauberstab1Strength(){
// das "this" würde sich in diesem Fall auf eine Instanz der Klasse Main beziehen,
// die enthält allerdings keine Instanzvariablen
return this.zauberstab1Strength;
} // Ende von "getZauberstab1Strength"
} // Ende von "Starke"
// hier fehlen noch die schließenden Klammern der main()-Methode und der Klasse
// nach dem Ende der main()-Methode könnten weitere Methoden deklariert werden...
Ist ja nicht ganz sinnlos. Die beste Empfehlung ist es einen Java-Kurs (in welcher Form auch immer) von Beginn an sorgfältig durchzuarbeiten, um am Ende die Grundlagen drauf zu haben.