Spiel Hangman programmieren - Ausgabe funktioniert nicht!!!

Status
Nicht offen für weitere Antworten.

Sindbad1983

Top Contributor
Hi!

Ich möcht das Spiel Hangman progammieren!
Nur häng ich jetzt grad an einem Fehler...kann mir bitte jemand helfen!

Ich möcht das Wort von der Konsole einlesen, dann in einem Array speichern und anschließend jeden Buchstaben des Wortes in ein '*' verwandeln..leider hat sich da ein Fehler eingeschlichen!


Es düft wieder irgendein Problem mit den Parametern geben! :autsch:


Code:
import java.util.*;
import java.io.*;

public class Hangman{


	char [] word;
	char [] star;
	int size;
	int cnt;
	int errors;
	char actualChar;

	public char [] besetzeArray(String s){ // Wort soll in Array eingefügt werden

		size=s.length();
		word=new char [size];

		for (int i=0;i<word.length;i++){
			word [i]=s.charAt(i);
		}
		return word;
	}

	public void konvertiere (char [] word){ // Buchstaben sollen in **** ausgegeben werden

		for(int i=0;i<word.length;i++){
			word [i]='*';
		}
	}

	public static void main(String [] args){

		Hangman test=new Hangman();
		String s;


		BufferedReader br=new BufferedReader (new InputStreamReader(System.in));

			System.out.println("Spieler 1, bitte geben sie das Wort ein: ");

			try{
				s=br.readLine();

			}
			catch(IOException e){
				System.out.println(e);
			}

			char [] word=test.besetzeArray(s); // da wirft der Compiler einen Fehler aus!
			test.konvertiere(word);
	}

}

Danke für eure Hilfe!

ciao,Tommy
 
G

Guest

Gast
S nicht initialisiert.
Ich bin mir nicht ganz sicher, da ich auch kein Profi bin, aber ich kenne den Fehler.
Gib dem String "S" einfach einen Wert.
Z.B.

Code:
String S="";
 

foobar

Top Contributor
Es ist schon ausreichend den String mit null zu initialisieren:
Code:
String s = null;
 

thE_29

Top Contributor
Jop, an dem liegts, weil du das s=br.readLine() in einem try/Catch Block hast und er ja nicht mal beim 1. mal unbedingt was reinlesen muss (vielleicht gibts ja die Datei/tastatur net - blödes Bsp kann aber ja sein) und dann hat s nie einen Wert und das mag er nicht, also musst du entweder sagen String S = ""; oder Stirng S = null;

Nachtrag: Viel zu spät :bae:
 

Sindbad1983

Top Contributor
soooo..jetzt hab ichs fast geschafft!

Aber die Ausgabe funzt nicht!

:bloed:

ich dürft da wieder mal einen Denkfehler drinnen haben! ???:L
Kann mir bitte nochmal jemand helfen? :bae:

Also das Spiel soll so funktionieren:

Spieler 1 gibt Wort wein, Spieler 2 erfäht Länge des Wortes ****
Spieler 2 gibt Buchstaben ein...und wenn ein Buchstabe richtig ist, z.B:

Kerstin

*******

gibt ein e:
*e*****

ok?


Code:
import java.util.*;
import java.io.*;
public class Hangman{


	char [] word;

	int size;
	int cnt;
	int errors;
	char actualChar;

	public char [] besetzeArray(String s){ //nichts neues -> funktioniert

		size=s.length();
		word=new char [size];

		for (int i=0;i<word.length;i++){
			word [i]=s.charAt(i);
		}
		return word;
	}

	public void konvertiere (char [] word){ //nichts neues -> funktioniert

		for(int i=0;i<word.length;i++){
			word [i]='*';
		}

		System.out.println(word);
	}


	public void find(char actualChar, char [] word){ //neu -> Fehler???

		for(int i=0;i<word.length;i++){
			if(word[i]==actualChar){
				word[i]=actualChar;
			}
			else{
				word[i]='*';
			}
		}
		System.out.println(word); //hier passt was nicht!
	}


	public String toString(){ //nichts verändert

		StringBuffer sb=new StringBuffer();

		for(int i=0;i<word.length;i++){
			sb.append(word[i]);
		}

		return sb.toString();
	}




	public static void main(String [] args){

		Hangman test=new Hangman();
		String s="";
		String s2="";
		int cnt=4;

		BufferedReader br=new BufferedReader (new InputStreamReader(System.in));




			System.out.println("Spieler 1, bitte geben sie das Wort ein: ");

			try{
				s=br.readLine();

			}
			catch(IOException e){
				System.out.println(e);
			}

			char [] word=test.besetzeArray(s);
			test.konvertiere(word);
			System.out.println("Sie haben insgesamt "+cnt+" Versuche, um das Wort zu erraten");
			while(cnt!=0){
			System.out.println("Geben Sie den Buchstaben ein: ");

			try{
				s2=br.readLine();
			}
			catch(IOException e){
				System.out.println(e);
			}

			char actualChar=s2.charAt(0);

			test.find(actualChar, word); //neu!!!!!!!!!!!
			System.out.println("Noch " +cnt+" Versuche");
			cnt--;


		}
	}

}
 

foobar

Top Contributor
Code:
import java.io.*;

public class Hangman
{

	char[] word;
	char[] star;
	int size;
	int cnt;
	int errors;
	char actualChar;

	public void find(char actualChar, char[] word)
	{ //neue Methode!!!!!!!!!!!!!

		for (int i = 0; i < word.length; i++)
		{
			if (word[i] != actualChar)
			{
				word[i] = '*';
			}
		}
		System.out.println(word);
	}

	public String toString()
	{

		StringBuffer sb = new StringBuffer();

		for (int i = 0; i < word.length; i++)
		{
			sb.append(word[i]);
		}

		return sb.toString();
	}

	public static void main(String[] args)
	{

		Hangman test = new Hangman();
		String s = "";
		String s2 = "";

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.println("Spieler 1, bitte geben sie das Wort ein: ");

		try
		{
			s = br.readLine();

		}
		catch (IOException e)
		{
			System.out.println(e);
		}

		char[] word = s.toCharArray();

		System.out.println("Geben Sie den Buchstaben ein: ");

		try
		{
			s2 = br.readLine();
		}
		catch (IOException e)
		{
			System.out.println(e);
		}

		char actualChar = s2.charAt(0); //auch neu!!!!!!!!

		test.find(actualChar, word);
	}

}
 

Sindbad1983

Top Contributor
sensationell!

es geht!
:applaus: Cool!

sind die beiden Methoden, die du rausgelöscht hast völlig unnötig?
er soll ja vorher das gesamte Wort in **** ausgeben, damit man sieht, wieviel Buchstaben es hat!

aber wo war bei mir jetzt der Fehler?
 

foobar

Top Contributor
er soll ja vorher das gesamte Wort in **** ausgeben, damit man sieht, wieviel Buchstaben es hat!
Oops, hab ich übersehen :)

Hier ist eine verbesserte Variante:

Code:
import java.io.*;

public class Hangman
{
	private char[] word;

	public Hangman()
	{
		this.startGame();
	}

	private void startGame()
	{
		String s 				    =  this.readStdin("Spieler 1, bitte geben sie das Wort ein: ");
		this.word 			    = s.toCharArray();
		this.printShadowedWord();
		String s2 			    =  this.readStdin("Geben Sie den Buchstaben ein: ");
		char actualChar 	= s2.charAt(0); //auch neu!!!!!!!!
		this.find(actualChar);
	}

	private void printShadowedWord()
	{
		for (int i =0; i < this.word.length; i++)
		{
			System.out.print("*");
		}
		System.out.println("");
	}
	
	private String readStdin(String message)
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println( message );
		String out = null;
		try
		{
			out= br.readLine();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		return out;
	}

	public void find(char actualChar)
	{
		for (int i = 0; i < word.length; i++)
		{
			if (this.word[i] != actualChar)
			{
				this.word[i] = '*';
			}
		}
		System.out.println(this.word);
	}

	public String toString()
	{
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < word.length; i++)
		{
			sb.append(this.word[i]);
		}
		return sb.toString();
	}

	public static void main(String[] args)
	{
		new Hangman();
	}
}
 

foobar

Top Contributor
aber wo war bei mir jetzt der Fehler?
- obwohl du word als Member deklariert hast, wurde die Variable an die einzelnen Methoden übergeben
- Member waren nicht gekapselt
- Redundanter Code beim einlesen der Benutzereingaben
- Unnötige Methoden (besetzeArray). Es gibt eine Methode in der Klasse String die ein char[] zurückliefert
- Stacktrace wurde nicht ausgegeben
- Unnötiger else-Zweig in der Methode find

Das Hauptproblem war aber, daß du in der Methode konvertiere alle chars in Sterne umwandelst.
 

abollm

Top Contributor
foobar hat gesagt.:
...
Ich glaube bei diesem Programm stand der didaktische Wert im Vordergrund.

Tja, wird wohl stimmen.

Vielleicht sollte man im Forum einmal, unabhängig von der FAQ. über eine Rubrik wie "Lösungen für typische, grundlegende Aufgabenstellungen" oder "Schritt-für-Schritt-Anleitungen" für derartige Aufgabenstellungen, versehen mit ein _wenig_ Theorie, nachdenken.

Wird dann vermutlich auch nicht von allen gelesen, aber macht es insgesamt einfacher, weil man als Antwortender nur darauf verweisen müsste.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
T Hangman spiel Java Basics - Anfänger-Themen 5
M hangman spiel Java Basics - Anfänger-Themen 1
L Hangman! Spiel Java Basics - Anfänger-Themen 5
M Hangman Spiel Java Basics - Anfänger-Themen 17
K Hangman Spiel ! wie immer probleme Java Basics - Anfänger-Themen 25
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben