我对编码比较陌生,老师要我们为刽子手游戏制作代码。他告诉我们,我们必须在不使用数组的情况下实现这一目标。我的问题是这样的:如果我有一个由用户声明的字符串,然后猜到了正确的字母,我怎么能特别能够用猜到的字母替换替换的下划线?
例如......
输入是“猫” 系统类型“_ _ _ _”
说我输入了字母“a”,我希望输出为:
“_ a _ _” 我如何获得该字母的位置编号,然后操纵下划线以使其成为字母?
答案 0 :(得分:0)
答案 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();
}