Variable per Getter holen - wie ?

JavaNewie

Mitglied
Hi liebe Comm,

ich bin ziemlich neu in der Java Welt angekommen und dementsprechend etwas verloren :bahnhof:
Ich denke nicht, dass es ein großes Problem ist, jedoch bekomme ich's einfach nicht hin, und in google fand ich auch nichts.

Also, mein Problem:
Ich habe in der Main-Methode (Hangman-Start) eine Variable (w) die ich durch eine gegebene Klasse einlese (Prog1Tools).
Diese Variable benötige ich nun in meiner zweiten Klasse Hangman, die mir als "Schablone" dient.

Ich bin in Google auf getter/setter Methoden gestoßen, jedoch konnte ich in der Main keine getter-Methode implizieren. Kann man generell keine Methoden in der Main schreiben, oder war meine Syntax falsch ?

public static String getw(){
return w; So hatte ich es stehen. Die Methode wollte ich dann in Hangman
} aufrufen (per : HangmanStart.getw) um somit w zu erhalten

Ich habe es jetzt gelöst indem ich außerhalb der Main meine Variable als Klassenvariable deklariert habe, jedoch finde ich dass nicht sonderlich schön. Kann mir jemand erklären wie ich das mit der Getter-Methode machen kann ?
Meinen Quellcode habe ich unten eingefügt.

PS: ich schätze es ist nicht sonderlich schön programmiert, dementsprechend, seid bitte nachsichtig 😳



import Prog1Tools.IOTools;
public class HangmanStart {

public static String w=IOTools.readString("Bitte geben sie den Namen des armen Hangmans an: ");

public static void main(String[] args) {

System.out.println("Willkommen beim hängenden Mann!");
System.out.println("Die Spielregeln sind ganz einfach!");
System.out.println("Sie benötigen nur einen Freund oder etwas gedult, da die PC vs Player Version noch nicht fertig ist!");
System.out.println();
System.out.println();

char tipp;

System.out.println();
System.out.println();
Hangman man=new Hangman(w);


for(int i=0;i<w.length()*2;i++){
tipp=man.eingabe();
if(man.trifft(tipp)==true){
man.sortieren();

if(man.überprüfen(w)){
System.out.println("********** SIE HABEN GEWONNEN *************");
break;
}
if(man.überprüfen(w)==false){
if(i==w.length()-1){
System.out.println("********** SIE HABEN VERLOREN *************");
break;
}

}

System.out.print("Unsortiert Erraten: "+man.anzahlbuchstaben+" ("+man.buchstabendurcheinander+")");

System.out.println();


}
}

}

}













import Prog1Tools.IOTools;
public class Hangman {
private final String name="Der hängende Mann";

int versuche;
String buchstabendurcheinander="";
int anzahlbuchstaben;
String w;
char[] buchstaben = new char[HangmanStart.w.length()];




public Hangman(String wort){
this.w=wort;
}

//Eingabe des Tipps
public char eingabe(){
System.out.println();
System.out.println();
char tipp=IOTools.readChar("Bitte ihren 1-stelligen(!) Tipp eingeben: ");
System.out.println();
return tipp;
}

//Überprüft ob der Tipp im Wort enthalten ist
public boolean trifft(char tipp){
versuche++;
for(int i=0; i<w.length();i++){//Wdhlt die überprüfung für Länge des Worts
char hilf=w.charAt(i);
if(hilf==tipp){
buchstaben=hilf;
System.out.println("Herzlichen Glückwunsch, Sie haben einen Treffer!");
anhängen(tipp);//Sammlung der verwendeten Buchstaben
anzahlbuchstaben++;
if(i==w.length()){
break;

}
return true;
}

}
System.out.print("Kein Treffer!");
System.out.print("Unsortiert Erraten: "+anzahlbuchstaben+" ("+buchstabendurcheinander+")"+"Versuche: "+versuche);
System.out.println();
return false;

}

public void sortieren(){

for(int i=0;i<w.length();i++){
System.out.println("Ihr wort: "+buchstaben);
}

}


//Überprüft ob Wort vollständig erraten wurde
public boolean überprüfen(String w){
/* StringBuilder worthilf = new StringBuilder(w.length());
for(int i=0;i< buchstaben.length;i++){
worthilf.setCharAt(i, buchstaben);
}
String wort=worthilf.toString();

if(wort.equals(w)){
return true;
}
else{
return false;
}*/

String hilf=" ";
for(int i=0;i<buchstaben.length;i++){
hilf +=buchstaben;
}
if(hilf.equals(" "+w)){
return true;
}
else{
return false;
}


}

//Hängt tipp, sofern richtig, an die Buchstabensammlung an
public void anhängen(char tipp){
buchstabendurcheinander += tipp;

}

}
 
du darfst getter nicht als static definieren, weil sie ja auf das Obejkt zugreifen und nicht nur auf die Klasse.
Sollte Eclipse bei sowas nicht auch eine brauchbare Fehlermeldung produzieren?
 
Zuletzt bearbeitet:
Bitte beim nächsten Mal Java-Tags für Java Code.
Außerdem (es kann auch ein Tippfehler sein) müssen Methoden, und so auch getter, mit den Klammern aufgerufen werden. Sonst denkt Java der Bezeichner sei eine Variable.
 

Zurück
Oben