Hangman游戏中如何声明并打印用户已输入的错误字母数组
嘿,我来帮你搞定Hangman游戏里错误字母数组的实现~
首先,咱们得先声明一个用来存错误字母的容器,用ArrayList<Character>会比普通数组更灵活,毕竟你不知道用户会猜错多少个字母,动态扩容的列表用起来更省心。
接下来,在你的游戏循环里,每次用户输入字母猜错的时候,就把这个字母加到错误列表里(记得要判断一下,别重复加同一个字母哦,不然用户输错同一个字母还扣次数就不太友好了)。然后每次循环都把错误字母打印出来,让用户清楚自己已经踩过哪些坑。
我把你的代码补全了,你可以参考一下:
import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Scanner; public class HangmanGame { // 假设这是你的单词列表,你可以换成自己的 private static List<String> word = List.of("apple", "banana", "cherry", "date"); private static int Tries = 0; public static void chosenWord() throws IOException { String randomWord = ""; Scanner ui = new Scanner(System.in); Random rand = new Random(); randomWord = word.get(rand.nextInt(word.size())); String dashes = new String(new char[randomWord.length()]).replace("\0", "_"); // 声明存储错误字母的列表 ArrayList<Character> wrongLetters = new ArrayList<>(); while (Tries < 6 && dashes.contains("_")) { System.out.println("当前猜词进度: " + dashes); System.out.print("请输入一个字母: "); char guess = ui.next().charAt(0); if (randomWord.contains(String.valueOf(guess))) { // 猜对了,更新下划线字符串 StringBuilder newDashes = new StringBuilder(dashes); for (int i = 0; i < randomWord.length(); i++) { if (randomWord.charAt(i) == guess) { newDashes.setCharAt(i, guess); } } dashes = newDashes.toString(); } else { // 猜错了,先检查有没有已经加过这个字母 if (!wrongLetters.contains(guess)) { wrongLetters.add(guess); Tries++; } System.out.println("猜错啦!剩余尝试次数: " + (6 - Tries)); } // 打印所有已输入的错误字母 System.out.println("已猜错的字母: " + wrongLetters); } // 游戏结束后的结果提示 if (!dashes.contains("_")) { System.out.println("🎉 恭喜你猜对了!正确单词是: " + randomWord); } else { System.out.println("😢 游戏结束,你输了!正确单词是: " + randomWord); } ui.close(); } public static void main(String[] args) throws IOException { chosenWord(); } }
这里几个关键点要注意:
- 用
ArrayList而不是数组,因为它能自动扩容,不用预先设定大小,处理动态的错误字母数量更方便。 - 加了一个判断
!wrongLetters.contains(guess),避免用户重复输入同一个错误字母时,重复添加到列表里还浪费尝试次数。 - 每次循环都会打印错误字母列表,用户能直观看到自己已经猜过哪些错误的字母,体验更好。
内容的提问来源于stack exchange,提问作者Dev_elop_er_
相关产品推荐
相关产品推荐

