私はしばらくの間このトピックを調査しましたが、あまり成功していません。私は StringBuilder を見つけましたが、それは驚異的に機能しますが、それは私が得た限りです。以下は、ハングマンプログラムを正常に動作させる方法です。
if(strGuess.equalsIgnoreCase("t")){
mainword.replace(0,1,"T");
gletters.append('T');
}
else if(strGuess.equalsIgnoreCase("e")){
mainword.replace(1,2,"E");
gletters.append('E');
}
else if(strGuess.equalsIgnoreCase("c")){
mainword.replace(2,3,"C");
gletters.append('C');
}
else if(strGuess.equalsIgnoreCase("h")){
mainword.replace(3,4,"H");
gletters.append('H');
}
else if(strGuess.equalsIgnoreCase("n")){
mainword.replace(4,5,"N");
gletters.append('N');
}
else if(strGuess.equalsIgnoreCase("o")){
mainword.replace(5,6,"O");
mainword.replace(7,8,"O");
gletters.append('O');
}
else if(strGuess.equalsIgnoreCase("l")){
mainword.replace(6,7,"L");
gletters.append('L');
}
else if(strGuess.equalsIgnoreCase("g")){
mainword.replace(8,9,"G");
gletters.append('G');
}
else if(strGuess.equalsIgnoreCase("y")){
mainword.replace(9,10,"Y");
gletters.append('Y');
}
else{
JOptionPane.showMessageDialog(null, "Sorry, that wasn't in the word!");
errors++;
gletters.append(strGuess.toUpperCase());
}
SetMain = mainword.toString();
GuessedLetters = gletters.toString();
WordLabel.setText(SetMain);
GuessedLabel.setText(GuessedLetters);
GuessText.setText(null);
GuessText.requestFocusInWindow();
ただし、すべての単語のすべての文字に対してこれを行うことはできません。これを行う簡単で効率的な方法はありますか? 私が欲しいのは、何らかの単語に対して一度だけ使用する必要があるように、ある種のループを持つことです。したがって、単語はテクノロジー (上記のように)、アップル、ピクルス、クリスマス、ハローなど、何でもかまいません。
for ループを使用してみましたが、答えはそこにあると感じています。そして、誰かが charAt() メソッドとそれをどこでどのように使用するかを説明できれば、それは良いことです. より効率的になるために私が得た最も近いものは次のとおりです。
for(i = 0; i < GuessWord.length(); i++) {
if (GuessWord.charAt(i) == guess2) {
mainword.replace(i,i,strGuess.toUpperCase());
}
それで、それをベースとして使用して、それを修正するように変更できるとしたら? または、私が考えていないことを教えてください。