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;
}
}
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;
}
}