我正在为我的更大应用程序Hangman进行测试阶段。但在我继续讨论该代码之前,我必须先弄清楚这段代码。
现在,我创建了2个字符串:1表示单词,1表示隐藏该单词的原始单词包含的字母数相同,但'-'
。现在,有人给了我完全正在寻找的代码,它读取原始字符串并替换第二个字符串中'-'
的相同位置,这取决于字母是否在字母中,现在我创建了一个循环循环六次,但这个词没有保持前一个字母猜测(如果猜对了)
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);
}
}
}
答案 0 :(得分:1)
上面的一个问题是你在while循环中创建StringBuilder
,所以每次循环都会重新创建。解决方案:在 while循环之前创建StringBuilder
和密码 。这样,StringBuilder
只会创建一次并保留循环中所做的更改。
答案 1 :(得分:1)
您只需更改2行代码,将其放在while
周期
String original = "painting";
String secret = new String(new char[original.length()]).replace('\0', '-');
答案 2 :(得分: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);