gpt4 book ai didi

java - 尝试将破折号更改为带有循环的字母

转载 作者:行者123 更新时间:2023-12-01 14:45:47 25 4
gpt4 key购买 nike

所以我正在为这个全新的、从未听说过的游戏编写一个程序,叫做刽子手(哈),并且我很难编写一个循环来给出我想要的结果。我陷入了猜出正确字母的位置(通过按下按钮)并在代表隐藏单词的破折号线上显示了正确的字母。现在,当我运行这个循环时,我的测试器弹出窗口仍然会弹出“匹配!---”或者当前 secret 单词有多少破折号。从字面上看,就好像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);
}
}
}
});

*****编辑两个*****

好吧!我想在你们的帮助下我终于解决了这个问题!当用户按下“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");
}
});

最佳答案

这行代码没有执行任何操作:

go.getGuessLength().replaceAll("[^" + letter + "]", "_").charAt(i);

replaceAll() 不会修改字符串(字符串在 Java 中是不可变的)。它返回一个新的字符串,其中字符已被替换。您正在对这个新字符串调用 charAt(i),并且不对这个字符执行任何操作。

关于java - 尝试将破折号更改为带有循环的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15449197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com