それで、私はハングマン (ha.) と呼ばれるこのまったく新しい、聞いたことのないゲームのプログラムを書いています。(ボタンを押すことによって) 正しい文字が推測され、隠された単語を表すダッシュの行に正しい文字が表示された時点で立ち往生しています。このループを実行すると、テスター ポップアップに "Match!---" または現在の秘密の単語に含まれるダッシュの数が表示されます。文字通り、replaceAll が実際には置き換えられないかのようです! 私は休憩なしで何時間もこれに悩まされてきたので、それが私が見逃していることが非常に明白であっても驚かないでしょう.
JButton btnA = new JButton("A\n");
btnA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String letter = "a";
char ch = 'a';
if (go.getWordInQuestion().contains(letter)) {
for(int i = 0; i<go.getWordInQuestion().length(); i++) {
//Replace dashes with correctly guessed letter
if(go.getWordInQuestion().charAt(i)== 0)
go.getGuessLength().replaceAll("[^" + letter + "]", "_").charAt(i);
}
//check to see what the new value of the "hidden word" getGuessLength looks like
JOptionPane.showMessageDialog(null, "Match! " + go.getGuessLength());
txtGuess.setText("" + go.getGuessLength());
} else
JOptionPane.showMessageDialog(null,"No Match :(");
}
});
*****編集******** わかりましたので、進歩しました(と思います)。ダッシュを文字に変更するループを作成しました!! 唯一の問題?それらすべてを変更します。-___- それで、ボタン A を押すと、一致するものがあれば --- ではなく、aaa と表示されます。この問題はおそらく非常に初歩的なものであることは間違いありませんが、Javaに関しては、私は学習が遅いです! 私はすべての肯定的で有益なフィードバックに感謝します!
JButton btnA = new JButton("A\n");
btnA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String letter = "a";
StringBuilder guessA = new StringBuilder('a');
for(int i = 0; i<go.getGuessLength().length();i++) {
if(go.getWordInQuestion().charAt(i)=='a') {
String partialWord = go.getGuessLength().replace("-", letter);
txtGuess.setText(partialWord);
JOptionPane.showMessageDialog(null,"Match! " + partialWord);
}
}
}
});
*****2つ編集*****
大丈夫!皆さんの助けのおかげで、私は最終的に問題を解決したと思います! ユーザーが「A」ボタンを押したときに、隠し単語に A がある場合、ダッシュに正常に置き換えられるようになりました。ウーフー!
btnA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String letter = "a";
StringBuilder guessA = new StringBuilder(go.getGuessLength());
if(go.getWordInQuestion().contains(letter)) {
for(int i = 0; i<go.getGuessLength().length();i++) {
if(go.getWordInQuestion().charAt(i)=='a') {
StringBuilder partialWord = guessA.replace(i,i+1, letter);
txtGuess.setText(guessA.toString());
JOptionPane.showMessageDialog(null,"Match! " + partialWord);
}
}
} else
JOptionPane.showMessageDialog(null, "Incorrect");
}
});