Daniel Thoma: Wörter Raten

Beitrag lesen

Hallo Robin,

do
    {
      System.out.println(ratewort);
      char buchstabe=StdInput.readChar("Raten Sie das Wort! Buchstabe: ");
      for (int i=0;i<=laenge-1;i++)
      {
          if(buchstabe==wort.charAt(i))
          {
           rbuchstabe[i]=wort.charAt(i);
          }
        }
    }
    while (wort!=ratewort);

Auf den ersten blick, hat das Programm zwei Fehler:
Du verwendest ratewort in der Abbruchbedingung, aber Du änderst diesen String nie.

Du vergleichst Strings mit !=. Damit vergleichst Du aber nicht, ob die Strings den gleichen Wert haben, sondern, ob es sich um die gleichen Objekte haben.
Es gilt nämlich a = new String(); b = a ==> a == b und a = new String, b = new String() ==> a.equals(b) aber nicht a = new String(); b = new String() ==> a == b

Du solltest für das ratewort einen editierbaren String, d.h. StringBuffer nehmen und diesen String direkt ändern. StringBuffer verfügt auch über eine "Zeichen ersetzen" Methode, die Du verwendden kannst.
Vergleichen musst Du dann mit ratewort.toString().equals(wort)

Grüße

Daniel