如何使用数字打印单词的字母?

时间:2016-04-12 02:51:12

标签: java

我对编码比较陌生,老师要我们为刽子手游戏制作代码。他告诉我们,我们必须在不使用数组的情况下实现这一目标。我的问题是这样的:如果我有一个由用户声明的字符串,然后猜到了正确的字母,我怎么能特别能够用猜到的字母替换替换的下划线?

例如......

输入是“猫” 系统类型“_ _ _ _”

说我输入了字母“a”,我希望输出为:

“_ a _ _” 我如何获得该字母的位置编号,然后操纵下划线以使其成为字母?

6 个答案:

答案 0 :(得分:0)

StringBuilder.charAt()

StringBuilder.setCharAt()

您可能希望了解这些方法。

出于打印目的,您可能需要StringBuilder.toString()

答案 1 :(得分:0)

您可以使用子字符串。这样的事情。

String original = "apple";
String guessed = original;
String withUnderscores = "_____";

String guess = "a";
while (guessed.contains(guess))
{
    int index = guessed.indexOf(guess);
    withUnderscores = withUnderscores.substring(0, index) + guess + withUnderscores.substring(index + 1);
    guessed = guessed.substring(0, index) + "." + guessed.substring(index + 1);
}

System.out.println(original);
System.out.println(guessed);

答案 2 :(得分:0)

  • 使用一个变量存储下划线字符串。 (即“____”

  • 使用另一个变量来存储答案字符串。 (即“猫”)。

  • 获取用户输入并循环遍历每个索引处的字符串。如果任何变量与输入字母匹配(string1.equals(string2)),则在循环所在的索引处替换下划线字符串中的字符。

使用charAt()将字符放在字符串中的某个位置。

您可以使用String或StringBuilder类执行此操作。如果你还没有在课程中学习过StringBuilder,你可能不应该将它用于你的作业。

答案 3 :(得分:0)

尝试这样的事情(我更倾向于对Set进行猜测,比使用字符串来保存它们更清楚):

   public String maskUnguessedLetters(String answer, String guessed) {
     Char MASKED = '_';
     StringBuilder sb = new StringBuilder();

     for (Char c : answer.toCharArray()) {
       sb.append(guessed.contains(c.toString())
                 ? c
                 : MASKED);
     }
     return sb.toString();
   }

答案 4 :(得分:-1)

我不完全理解这个问题,但我认为这可能有所帮助。

final String trueWord="cats";
String guessWord="____";

String input="a";

//if the input matches
if(trueWord.contains(input)){

    //last Index of input in trueWord
    int lastEntry=-1;

    //hold all indices of input character in trueWord
    ArrayList<Integer> indices=new ArrayList<>();
    while(trueWord.indexOf(input,lastEntry+1) >= 0){
        lastEntry=trueWord.indexOf(input);
        indices.add(lastEntry);
    }

    //now replace the characters at the indices
    StringBuilder newGuessWord = new StringBuilder(guessWord);

    for(int index:indices){
        //replace one character at a time.
        newGuessWord.setCharAt(index, input.charAt(0));
    }
    //the new word
    guessWord=newGuessWord.toString();

}

答案 5 :(得分:-1)

这不是最优化的代码,但肯定会让您了解如何完成任务。

public static void main(String[] args) {

    final String word = "cats";
    Scanner scanner = new Scanner(System.in);
    System.out.println("Guess the character");

    String finalString = "";
    char letter = scanner.next().charAt(0);

    for (char s : word.toCharArray()) {
        if (s == letter) {
            finalString += s;
        } else
            finalString += "_";
    }

    System.out.println(finalString);
    scanner.close();
}