public class Hangman {
private String secret;
private String disguise;
private int guessCount;
private int wrong;
public Hangman() {
secret="word";
disguise="????";
guessCount=0;
wrong=0;
}
public void makeGuess(char input) {
String temp;
temp=disguise;
for (int i=0; i<secret.length(); i++) {
if (secret.charAt(i)==input) {
disguise=disguise.replace(disguise.charAt(i), input);
}
}
if (temp.equals(disguise))
wrong++;
}
私のコード、特に disguise=disguise.replace 行に問題があります。私のコードの目的は、ユーザーから推測して、偽装した記号を秘密裏に文字に置き換えることです。for ループは秘密の単語のすべての文字を調べ、ユーザーが入力した文字と秘密の単語の文字との一致を探します。一致する場合は、その位置にある変装した記号を入力からの文字に置き換えるプログラムが必要です。
代わりに、コードが変装したすべての文字を、秘密という単語に含まれているかどうかをユーザーが推測する文字に置き換えています。
Example:
????
w
wwww (disguise)
word (secret)
what I want:
????
w
w???
word
これは私のデモクラスです:
import java.util.Scanner;
public class HangmanDemo {
public static void main(String[] args) {
char input;
Hangman game = new Hangman();
Scanner keyboard = new Scanner(System.in);
System.out.println(game.getDisguisedWord());
for (int i=0;i<10;i++){
String line=keyboard.nextLine();
input = line.charAt(0);
game.makeGuess(input);
game.guessCount();
game.getDisguisedWord();
game.isFound();
System.out.println(game.getDisguisedWord());
System.out.println(game.getSecretWord());
}
}
}
クラスコーディングのreplaceステートメントの何が問題なのか誰かが指摘できれば、それは大歓迎です。
ありがとう