to_date
这里循环遍历String中的字符,并检查用户输入guessedLetter是否与字符串中的char匹配。现在循环循环遍历每个char,从字符串中的第一个字符开始到最后一个,用户必须猜测它们在字符串中排列的字母的确切顺序,我该如何解决这个问题,以便任何字符输入匹配a字符串中的字符是正确的,而不是字符必须按顺序?
public class Game {
public static void main(String[] args) {
String secretWord = "frog";
System.out.println("Word has " + secretWord.length() + " letters.");
System.out.println("Guess a letter: ");
int correctGuesses = 0;
int strikes = 5;
Scanner input = new Scanner(System.in);
while (strikes > 0) {
}
答案 0 :(得分:0)
guessedLetter = input.next().charAt(0);
如果您想匹配整个UserInput
,则不应该charAt(0)
。
另一方面,如果你只想匹配任何角色,那么你第一次测试guessedLetter == currentLetter
是真的,那么就退出程序。
顺便说一下,如果你喜欢,只需谷歌“KMP算法”来学习如何匹配String。
答案 1 :(得分:0)
您可以按以下方式尝试:
将secretWord的所有字符移动到地图上(键将是字符,值将是字符串中该字符的发生率)。
从键盘读取字符并进行交互(基本上是你的逻辑)。
这是代码。
public static void main(String[] args) {
String secretWord = "frog";
Map<Character, Integer> mapOfLetters = new HashMap<>();
for (char c : secretWord.toCharArray()) {
int count = 1;
if (mapOfLetters.containsKey(c)) {
count = mapOfLetters.get(c) + 1;
}
mapOfLetters.put(c, count);
}
System.out.println("Word has " + secretWord.length() + " letters.");
System.out.println("Guess a letter: ");
int correctGuesses = 0;
int strikes = 5;
Scanner input = new Scanner(System.in);
while (strikes > 0 && !mapOfLetters.isEmpty()) {
char guessedLetter = input.next().charAt(0);
if (mapOfLetters.containsKey(guessedLetter)) {
correctGuesses++;
System.out.printf("Correct Guess! %d Letters Left!\n", secretWord.length() - correctGuesses);
int count = mapOfLetters.get(guessedLetter) - 1;
if (count == 0) {
mapOfLetters.remove(guessedLetter);
} else {
mapOfLetters.put(guessedLetter, count);
}
} else {
strikes--;
System.out.printf("Incorrect: You Have %d Chances Left..\n", strikes);
}
}
if (strikes == 0) {
System.out.println("You Are Out of Chances! Game over!");
} else if(mapOfLetters.isEmpty()){
System.out.println("You Got It! The Word is: " + secretWord);
}
}