# Vergleich zweier Strings und schreiben in Textarea



## wusli (2. Jul 2012)

Hallo,
Ich bin dabei ein Galgenmännchen Programm zu schreiben,
erstmal der Quellcode

```
package Hangman;

import java.awt.BorderLayout;

public class Hangman extends JFrame {

	private JPanel contentPane;
	private JTextField buchstabe;
	private JTextField wort;

	/**
	 * Launch the application.
	 */
	
	public static void main(String[] args) {
		
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Hangman frame = new Hangman();
					frame.setVisible(true);
					
					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Hangman() {
		setTitle("Hangman");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		buchstabe = new JTextField();
		buchstabe.setBounds(217, 11, 86, 20);
		contentPane.add(buchstabe);
		buchstabe.setColumns(1);
		
		wort = new JTextField();
		wort.setBounds(10, 11, 86, 20);
		contentPane.add(wort);
		wort.setColumns(10);
		
		final JTextArea ta = new JTextArea();
		ta.setBounds(10, 42, 390, 20);
		contentPane.add(ta);
		
		JButton pruefen = new JButton("Pr\u00FCfen");
		pruefen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			String Buchstabe = wort.getText();
			String Wort = wort.getText();
			for(int i= 0;i < Wort.length(); i++ )
			{
				ta.setText(ta.getText()+ "_ ");
			}
				
			}
		});
		pruefen.setBounds(313, 10, 89, 23);
		contentPane.add(pruefen);
		
	
		
		
		JButton button1 = new JButton("Ok");
		button1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				wort.enable(false);
				wort.setVisible(false);
				String Wort = wort.getText();
				int i;
				
				for(i= 0;i < Wort.length(); i++ )
				{
					ta.setText(ta.getText()+ "_ ");
				}
				
			}
		});
		button1.setBounds(118, 10, 89, 23);
		contentPane.add(button1);
		
		
	}
}
```

Meine Frage ist jetzt, wie kann ich vergleichen, ob mein gewählter Buchstabe im Wort drin vorkommt und wie kann ich den Buchstaben dann durch den "_" im Textarea ersetzen??

Danke im Vorraus:bae:
Wusli


----------



## wurzelsepp (2. Jul 2012)

Stringklasse mit den Methoden 
- indexOf
- replace


----------



## wusli (2. Jul 2012)

Ok, ich versuch das mal, schonmal Danke


----------



## wurzelsepp (2. Jul 2012)

Mit dem indexOf erhälst du die Position wo das/die Zeichen sind; mit replace kannst du es ersetzen.

Nutze dafür die Klasse 

StringBuffer (Java Platform SE 7 )

Stringbuffer, da dort das replace ab einer Position funktioniert


----------



## wusli (2. Jul 2012)

komm damit nicht so ganz klar
kannst du mir denn da weiterhelfen?
Also ich hab z.B. das Wort hallo, dann steht im Textfeld _ _ _ _ _ und als Buchstabe gebe ich a ein, dann soll überprüft werden, ob im Wort a vorkommt und wenn ja im Textfeld eingesetzt werden, also _ a _ _ _


----------



## SlaterB (2. Jul 2012)

was hast du denn mit indexOf usw. alles schon ausprobiert?
es gibt so viele Methoden, auch substring, es gibt zig Wege vorzugehen,

direkt hintereinander von Anfang bis Ende in 2 Min. kann man das natürlich nicht tippen, auch wenn letzlich nur wenige Zeilen Code,
das ist eine lange Folge von Anschauen, Ausprobieren usw., die musst du selber gehen, evtl. noch mit sinnvollen Fragen hier im Forum,

aber eine klare überschaubare Aufgabe ohne Zeitdruck jetzt abgeben, wann willst du je in Java selber etwas erreichen?
ein Frame aus Beispielen zu kopieren ist keine Leistung, mit einfachen Strings, if, for-Schleife, Berechnungen, Objekte in Listen usw. klarzukommen,
das ist der Kern des Programmierens


----------



## HimBromBeere (2. Jul 2012)

```
String#indexOf
```
 findet die Position eines Zeichens in einem String. Kommt das Zeichen nicht vor, wird -1 zurückgeben.



```
String#replace
```
... naja, macht halt das Ersetzen eines Zielstrings durch einen Quellstring, wo ist das Problem?


----------



## njans (2. Jul 2012)

Generell schaust du, ob der Buchstabe vorhanden ist:

```
StringBuffer gesuchtVerdeckt = new StringBuffer("_______");
		int index = "gesucht".indexOf("s");

		if(index > -1)
			gesuchtVerdeckt.replace(index, index+1, "s");
		
		System.out.println(gesuchtVerdeckt.toString());
```

Das ist mal ein kleines Beispiel, ich hoffe du machst das nicht ganz so, in deinem Code


----------



## maestr0 (2. Jul 2012)

Da gibt es ganz viele Möglichkeiten,auch eine einfach ist


```
String buchstabe = "a";
		String wort = "Feuerwehrrettungshubschraubernotlandeplatzaufseherin";
		String neuesWort="";
		
		if(wort.contains(buchstabe)){
			neuesWort = wort.replaceAll(buchstabe, "_");
		}
		System.out.println(neuesWort);
```

oder du schaust hier mal nach Buchstabe aus String entfernen @ tutorials.de: Tutorials, Forum & Hilfe


----------



## dfas14523 (2. Jul 2012)

@maestr()

Das Spiel läuft irgendwie anders. Zu anfang stehen die Unterstriche......


----------



## SlaterB (2. Jul 2012)

geschickt kann das dennoch sein:
von _ _ _ _ _ _ kann man nicht viel direkt umdrehen,
hat man dagegen das Originalwort und dreht per Schleife alle 26 bzw. 52 Buchstaben zu _, 
aber doch nicht, läßt einige aus, dann führt das ja auch zum Ziel


----------



## maestr0 (2. Jul 2012)

@dfas14523

Sry hast natürlich recht=) hab das lange nicht mehr gespielt 
Jedoch müsste nun der Thread-Opener mit einer der schon geposteten Lösungen zurechtkommen.


----------



## wusli (3. Jul 2012)

Danke schonmal für die ganzen Hilfe, ich werde jetzt mal versuchen, dass ganze anzuwenden


----------

