2

我正忙于我更大的应用程序 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);
    }

}
}
4

3 回答 3

1

上面的一个问题是您正在创建StringBuilderwhile 循环内部,因此每个循环都会重新创建它。解决方案:在 while 循环之前创建您的StringBuilder秘密单词。这样,创建一次并保留循环中所做的更改。StringBuilder

于 2012-09-02T20:15:13.910 回答
1

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

String original = "painting";
String secret = new String(new char[original.length()]).replace('\0', '-');
于 2012-09-02T20:19:28.330 回答
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);
于 2012-09-02T20:20:32.907 回答