Java抛硬币游戏如何实现正反面出现次数统计及实时输出功能
实现方案
你只需要新增计数变量存储正反面出现次数,每次抛硬币后更新并打印统计结果即可,具体修改如下:
核心修改思路
- 在
CoinToss类中新增两个整数类型的成员变量,分别对应正面、反面的出现总次数 - 每次抛硬币得到结果后,给对应计数器加1,同时打印最新的统计数据
- 额外优化:原代码每次调用抛硬币方法都会新建
Random实例,重复创建浪费资源,可改为全局复用一个Random实例
修改后完整代码
import java.util.Random; import java.util.Scanner; public class CoinToss { private enum Coin { Head, Tail } // 新增统计计数变量 private int headCount = 0; private int tailCount = 0; // 全局复用Random实例 private Random r = new Random(); public static void main(String[] args) { CoinToss game = new CoinToss(); game.startGame(); } private void startGame() { Scanner scanner = new Scanner(System.in); Coin guess; while (true) { System.out.print("请输入你的猜测:输入1代表猜正面,2代表猜反面,3代表退出游戏:"); String choice = scanner.nextLine(); if (choice.equalsIgnoreCase("3")) { // 退出前打印总统计 System.out.println("=== 游戏结束总统计 ==="); System.out.println("正面总出现次数:" + headCount); System.out.println("反面总出现次数:" + tailCount); break; } else if (choice.equalsIgnoreCase("1")) { guess = Coin.Head; } else if (choice.equalsIgnoreCase("2")) { guess = Coin.Tail; } else { System.out.println("请输入合法选项:1(正面)、2(反面)、3(退出)"); continue; } Coin toss = tosscoin(); // 更新计数 if (toss == Coin.Head) { headCount++; } else { tailCount++; } // 打印最新统计 System.out.println("=== 当前统计 ==="); System.out.println("正面出现次数:" + headCount); System.out.println("反面出现次数:" + tailCount); if (guess == toss) { System.out.println("恭喜你猜对了!"); } else { System.out.println("很遗憾你猜错了"); } } scanner.close(); } private Coin tosscoin() { int sideup = r.nextInt(2); if (sideup == 1) { return Coin.Head; } else { return Coin.Tail; } } }
运行逻辑说明
每次用户输入有效猜测完成抛硬币后,程序会先更新对应正反面的计数,立刻输出当前最新的统计结果,用户选择退出时也会输出全局总统计,完全匹配需求。
内容的提问来源于stack exchange,提问作者Dominic Salinas
相关产品推荐
相关产品推荐

