You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手开发猜数字小游戏遇到四项功能实现难题求助

嘿,作为Java新手能自己动手开发猜数字小游戏,这上手节奏真的很棒!针对你遇到的四个功能实现难题,我给你整理了非常贴合新手的解决方案,包含思路和可直接参考的代码片段:

1. 记录每位用户的错误答案

要实现这个功能,我们可以用一个HashMap来存储,键是用户名,值用ArrayList保存该用户所有的错误答案。每次用户猜错数字时,就能把错误数字添加到对应的列表里。

示例代码:

// 初始化存储错误答案的集合:键=用户名,值=该用户的错误答案列表
Map<String, List<Integer>> userWrongGuesses = new HashMap<>();

// 假设当前用户是"小明",他猜错了数字7
String currentUser = "小明";
int wrongGuess = 7;

// 如果用户还没有错误记录,先为他创建一个空列表
userWrongGuesses.putIfAbsent(currentUser, new ArrayList<>());
// 将错误数字添加到列表中
userWrongGuesses.get(currentUser).add(wrongGuess);

2. 用户猜对数字后,后续回合跳过该用户

我们可以用一个HashSet来记录已经猜对数字的用户。每次回合开始前,先检查当前用户是否在这个集合里,如果在的话就直接跳过他的回合。

示例代码:

// 存储已经猜对数字的用户
Set<String> guessedUsers = new HashSet<>();

// 当用户猜对数字时,把他加入集合
boolean isGuessCorrect = true; // 假设用户猜对了
if (isGuessCorrect) {
    guessedUsers.add(currentUser);
}

// 遍历所有玩家进行回合时的判断
List<String> allUsers = Arrays.asList("小明", "小红", "小刚");
for (String user : allUsers) {
    if (guessedUsers.contains(user)) {
        System.out.println(user + "已经猜对数字啦,跳过本轮~");
        continue;
    }
    // 这里执行该用户的猜数字逻辑
}

3. 所有玩家都猜对后,输出每位玩家猜对所用的次数

我们需要一个HashMap来记录每个用户的尝试次数,不管用户猜的是对是错,每猜一次就把次数加1。当所有玩家都猜对后,直接遍历这个集合输出即可。

示例代码:

// 存储每个用户的尝试次数:键=用户名,值=尝试次数
Map<String, Integer> userAttemptCounts = new HashMap<>();

// 用户每猜一次,更新次数(不管对错)
userAttemptCounts.put(currentUser, userAttemptCounts.getOrDefault(currentUser, 0) + 1);

// 当所有玩家都猜对后,输出次数
System.out.println("=== 各位玩家的猜对次数统计 ===");
for (Map.Entry<String, Integer> entry : userAttemptCounts.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue() + "次");
}

4. 输出所有错误回答并展示玩家排名

输出错误回答就是遍历我们第一个功能里的userWrongGuesses集合即可;玩家排名可以根据尝试次数来排序,次数越少排名越靠前,我们可以把userAttemptCounts的条目转换成列表,然后自定义排序规则。

示例代码:

// 输出所有错误回答记录
System.out.println("=== 所有错误回答记录 ===");
for (Map.Entry<String, List<Integer>> entry : userWrongGuesses.entrySet()) {
    System.out.println(entry.getKey() + "的错误答案:" + entry.getValue());
}

// 生成玩家排名(按猜对次数升序,次数越少排名越靠前)
List<Map.Entry<String, Integer>> sortedPlayers = new ArrayList<>(userAttemptCounts.entrySet());
sortedPlayers.sort((playerA, playerB) -> playerA.getValue().compareTo(playerB.getValue()));

// 输出排名
System.out.println("=== 玩家最终排名 ===");
int rank = 1;
for (Map.Entry<String, Integer> entry : sortedPlayers) {
    System.out.println(rank + ". " + entry.getKey() + "(" + entry.getValue() + "次猜对)");
    rank++;
}

内容的提问来源于stack exchange,提问作者Jose Valladares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:13:38