我来创建一个统计门将扑救次数的Java程序,比较两位门将谁更忙。

import java.util.*;
public class GoalKeeperComparison {
// 门将类
static class GoalKeeper {
private String name;
private List<Integer> savesPerMatch;
public GoalKeeper(String name) {
this.name = name;
this.savesPerMatch = new ArrayList<>();
}
public void addSaves(int saves) {
savesPerMatch.add(saves);
}
public String getName() {
return name;
}
public int getTotalSaves() {
return savesPerMatch.stream().mapToInt(Integer::intValue).sum();
}
public double getAverageSaves() {
if (savesPerMatch.isEmpty()) return 0;
return (double) getTotalSaves() / savesPerMatch.size();
}
public int getMaxSaves() {
return savesPerMatch.stream().mapToInt(Integer::intValue).max().orElse(0);
}
public int getMatchesPlayed() {
return savesPerMatch.size();
}
public void printStats() {
System.out.printf("%s 的数据统计:%n", name);
System.out.printf(" 比赛场次: %d 场%n", getMatchesPlayed());
System.out.printf(" 总扑救次数: %d 次%n", getTotalSaves());
System.out.printf(" 场均扑救: %.2f 次%n", getAverageSaves());
System.out.printf(" 单场最高扑救: %d 次%n", getMaxSaves());
}
}
// 生成随机扑救数据的辅助方法
private static void generateRandomSaves(GoalKeeper keeper, int matches, int min, int max) {
Random random = new Random();
for (int i = 0; i < matches; i++) {
keeper.addSaves(random.nextInt(max - min + 1) + min);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 创建两位门将
GoalKeeper keeper1 = new GoalKeeper("门将A");
GoalKeeper keeper2 = new GoalKeeper("门将B");
System.out.println("===== 门将扑救次数比较系统 =====");
System.out.println("选择数据输入方式:");
System.out.println("1. 手动输入数据");
System.out.println("2. 自动生成随机数据");
int choice = scanner.nextInt();
scanner.nextLine(); // 消费换行
if (choice == 1) {
// 手动输入数据
inputDataManually(keeper1, keeper2, scanner);
} else {
// 自动生成随机数据
generateRandomData(keeper1, keeper2);
}
// 比较并输出结果
compareGoalKeepers(keeper1, keeper2);
scanner.close();
}
// 手动输入数据
private static void inputDataManually(GoalKeeper keeper1, GoalKeeper keeper2, Scanner scanner) {
System.out.print("请输入门将A的比赛场次: ");
int matches1 = scanner.nextInt();
System.out.println("请输入门将A每场比赛的扑救次数:");
for (int i = 0; i < matches1; i++) {
System.out.printf("第%d场比赛: ", i + 1);
int saves = scanner.nextInt();
keeper1.addSaves(saves);
}
System.out.print("请输入门将B的比赛场次: ");
int matches2 = scanner.nextInt();
System.out.println("请输入门将B每场比赛的扑救次数:");
for (int i = 0; i < matches2; i++) {
System.out.printf("第%d场比赛: ", i + 1);
int saves = scanner.nextInt();
keeper2.addSaves(saves);
}
}
// 自动生成随机数据
private static void generateRandomData(GoalKeeper keeper1, GoalKeeper keeper2) {
System.out.println("正在生成随机数据...");
// 门将A:30场比赛,每场0-8次扑救
generateRandomSaves(keeper1, 30, 0, 8);
// 门将B:32场比赛,每场0-10次扑救
generateRandomSaves(keeper2, 32, 0, 10);
System.out.println("数据生成完成!");
}
// 比较两位门将
private static void compareGoalKeepers(GoalKeeper keeper1, GoalKeeper keeper2) {
System.out.println("\n========== 统计结果 ==========");
// 打印各自数据
keeper1.printStats();
System.out.println();
keeper2.printStats();
// 比较分析
System.out.println("\n========== 比较分析 ==========");
// 1. 按总扑救次数比较
int total1 = keeper1.getTotalSaves();
int total2 = keeper2.getTotalSaves();
System.out.printf("总扑救次数: %s %d次 vs %s %d次%n",
keeper1.getName(), total1, keeper2.getName(), total2);
if (total1 > total2) {
System.out.println("按总扑救次数,门将A更忙!");
} else if (total2 > total1) {
System.out.println("按总扑救次数,门将B更忙!");
} else {
System.out.println("双方总扑救次数相同!");
}
// 2. 按场均扑救比较(更公平的比较)
double avg1 = keeper1.getAverageSaves();
double avg2 = keeper2.getAverageSaves();
System.out.printf("%n场均扑救: %s %.2f次 vs %s %.2f次%n",
keeper1.getName(), avg1, keeper2.getName(), avg2);
if (avg1 > avg2) {
System.out.println("按场均数据,门将A更忙!");
} else if (avg2 > avg1) {
System.out.println("按场均数据,门将B更忙!");
} else {
System.out.println("双方场均扑救相当!");
}
// 3. 综合排名
System.out.println("\n========== 综合排名 ==========");
// 计算综合得分(总扑救和场均各占50%)
double score1 = (total1 / (double) Math.max(total1, total2)) * 50 +
(avg1 / (double) Math.max(avg1, avg2)) * 50;
double score2 = (total2 / (double) Math.max(total1, total2)) * 50 +
(avg2 / (double) Math.max(avg1, avg2)) * 50;
System.out.printf("%s 综合得分: %.2f分%n", keeper1.getName(), score1);
System.out.printf("%s 综合得分: %.2f分%n", keeper2.getName(), score2);
if (score1 > score2) {
System.out.printf("🏆 综合排名: %s 更忙!%n", keeper1.getName());
} else if (score2 > score1) {
System.out.printf("🏆 综合排名: %s 更忙!%n", keeper2.getName());
} else {
System.out.println("🏆 综合排名: 双方持平!");
}
// 额外信息
System.out.println("\n========== 额外信息 ==========");
if (keeper1.getMatchesPlayed() > keeper2.getMatchesPlayed()) {
System.out.printf("%s 比 %s 多踢了 %d 场比赛%n",
keeper1.getName(), keeper2.getName(),
keeper1.getMatchesPlayed() - keeper2.getMatchesPlayed());
} else if (keeper2.getMatchesPlayed() > keeper1.getMatchesPlayed()) {
System.out.printf("%s 比 %s 多踢了 %d 场比赛%n",
keeper2.getName(), keeper1.getName(),
keeper2.getMatchesPlayed() - keeper1.getMatchesPlayed());
} else {
System.out.println("双方比赛场次相同");
}
}
}
这样写更简洁,注释更清晰,我来提供另一个更简洁的版本:
import java.util.*;
public class GoalKeeperComparison {
public static void main(String[] args) {
// 创建两位门将的数据
int[] savesKeeper1 = {3, 5, 2, 6, 4, 1, 5, 3, 6, 2};
int[] savesKeeper2 = {4, 2, 5, 3, 6, 4, 2, 5, 7, 3};
// 统计门将1
int total1 = Arrays.stream(savesKeeper1).sum();
double avg1 = Arrays.stream(savesKeeper1).average().orElse(0);
// 统计门将2
int total2 = Arrays.stream(savesKeeper2).sum();
double avg2 = Arrays.stream(savesKeeper2).average().orElse(0);
System.out.println("========== 门将扑救统计 ==========");
System.out.printf("门将A: 总扑救%d次, 场均%.1f次%n", total1, avg1);
System.out.printf("门将B: 总扑救%d次, 场均%.1f次%n", total2, avg2);
System.out.println("\n========== 比较结果 ==========");
// 比较总扑救次数
if (total1 > total2) {
System.out.println("🔴 门将A更忙!总扑救次数更多");
} else if (total2 > total1) {
System.out.println("🔴 门将B更忙!总扑救次数更多");
} else {
System.out.println("📊 双方总扑救次数相同");
}
// 比较场均扑救
if (avg1 > avg2) {
System.out.println("⚽ 根据场均扑救,门将A承受射门压力更大");
} else if (avg2 > avg1) {
System.out.println("⚽ 根据场均扑救,门将B承受射门压力更大");
} else {
System.out.println("⚽ 双方场均扑救次数相同");
}
}
}
程序特点:
- 多种统计方式:比较总扑救次数、场均扑救次数等
- 两种数据输入:支持手动输入和随机生成
- 综合评分:结合总扑救和场均进行综合排名
- 直观输出:使用中文和表情符号使结果更清晰
运行示例:
===== 门将扑救次数比较系统 =====
选择数据输入方式:
1. 手动输入数据
2. 自动生成随机数据
2
正在生成随机数据...
数据生成完成!
========== 统计结果 ==========
门将A 的数据统计:
比赛场次: 30 场
总扑救次数: 120 次
场均扑救: 4.00 次
单场最高扑救: 8 次
门将B 的数据统计:
比赛场次: 32 场
总扑救次数: 145 次
场均扑救: 4.53 次
单场最高扑救: 10 次
========== 比较分析 ==========
总扑救次数: 门将A 120次 vs 门将B 145次
按总扑救次数,门将B更忙!
这个程序可以灵活应用于不同的比较场景,既支持手动输入真实数据,也可以生成随机数据模拟分析。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播