2

私は、より大きなアプリケーション Hangman のテスト フェーズで忙しくしています。しかし、そのコードに進む前に、まずこのコードを理解する必要があります。

ここで、2 つの文字列を作成しました。1 つは単語で、もう 1 つは元の単語に含まれる文字数と同じ文字数でその単語を非表示にしますが、'-'. さて、誰かが私が探していた正確なコードをくれました。それは元の文字列を読み取り、文字が'-'文字にあるかどうかに応じて同じ位置で2番目の文字列を置き換えます。今、6回ループするループを作成しましたが、単語は前の文字を推測したままにしません (正しく推測された場合)

import javax.swing.*;

public class MyThisTest{
public static void main(String[] args){
    int error = 0;
    while(error < 6){
    char guessLetter = JOptionPane.showInputDialog(null, "Enter a letter:").charAt(0);



    String original = "painting";
    String secret = new String(new char[original.length()]).replace('\0', '-');

    StringBuilder builder = new StringBuilder(secret);
    for (int i = 0; i < original.length(); i++){
        if (original.charAt(i) == guessLetter){
            builder.setCharAt(i, guessLetter);
        }
    }

    secret = builder.toString();
    error++;
    System.out.println(secret);
    System.out.println(original);
    }

}
}
4

3 に答える 3

1

上記の問題はStringBuilder、while ループの内部を作成しているため、各ループで再作成されることです。解決策: while ループのStringBuilderに秘密の単語を作成します。このようにして、が一度作成され、ループで行われた変更が保持されます。StringBuilder

于 2012-09-02T20:15:13.910 に答える
1

変更する必要があるのは 2 行のコードのみで、whileサイクルの前に配置します

String original = "painting";
String secret = new String(new char[original.length()]).replace('\0', '-');
于 2012-09-02T20:19:28.330 に答える
0

これから始めましょう

int error = 0;

String original = "painting";
String secret = new String(new char[original.length()]).replace('\0', '-');

while(error < 6)
{
   char guessLetter = JOptionPane.showInputDialog(null, "Enter a letter:").charAt(0);

   StringBuilder builder = new StringBuilder(secret);
   for (int i = 0; i < original.length(); i++){
     if (original.charAt(i) == guessLetter){
        builder.setCharAt(i, guessLetter);
     }
   }

   secret = builder.toString();
   error++;

}
  System.out.println(secret);
  System.out.println(original);
于 2012-09-02T20:20:32.907 に答える