Java While loop循环所有内容,但不';救不了

Java While loop循环所有内容,但不';救不了,java,swing,dialog,joptionpane,Java,Swing,Dialog,Joptionpane,我正忙着为我更大的应用程序做测试,Hangman。但在我继续研究代码之前,我必须先弄清楚这段代码 现在,我创建了两个字符串:1个是单词,1个是将该单词隐藏在原始单词包含的相同字母数中,但带有“-”。现在,有人给了我我想要的代码,它读取原始字符串,并在相同位置替换第二个字符串中的'-',这取决于字符是否在字母中,现在我已经创建了一个循环来循环六次,但单词没有保留前一个字母的猜测(如果猜测正确) import javax.swing.*; 公共类神话学家{ 公共静态void main(字符串[]ar

我正忙着为我更大的应用程序做测试,Hangman。但在我继续研究代码之前,我必须先弄清楚这段代码

现在,我创建了两个字符串:1个是单词,1个是将该单词隐藏在原始单词包含的相同字母数中,但带有
“-”
。现在,有人给了我我想要的代码,它读取原始字符串,并在相同位置替换第二个字符串中的
'-'
,这取决于字符是否在字母中,现在我已经创建了一个循环来循环六次,但单词没有保留前一个字母的猜测(如果猜测正确)

import javax.swing.*;
公共类神话学家{
公共静态void main(字符串[]args){
整数误差=0;
而(误差<6){
char guessLetter=JOptionPane.showInputDialog(null,“输入字母:”).charAt(0);
String original=“绘画”;
String secret=新字符串(新字符[original.length()])。替换('\0','-');
StringBuilder=新的StringBuilder(机密);
对于(int i=0;i
上面的一个问题是,您正在while循环中创建
StringBuilder
,因此每次循环都会重新创建它。解决方案:在while循环之前创建
StringBuilder
和secretword。通过这种方式,
StringBuilder
只创建一次,并保留在循环中所做的更改。

您只需要更改两行代码,在循环时将其放在
之前

String original = "painting";
String secret = new String(new char[original.length()]).replace('\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);
int错误=0;
String original=“绘画”;
String secret=新字符串(新字符[original.length()])。替换('\0','-');
而(误差<6)
{
char guessLetter=JOptionPane.showInputDialog(null,“输入字母:”).charAt(0);
StringBuilder=新的StringBuilder(机密);
对于(int i=0;i
为什么要投否决票?是因为最后两行吗?否则,这与公认的答案没有什么不同
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);