本文目录导读:

我来为您设计一个Java程序,用于统计两支球队比赛中红黄牌数量并比较哪队更多。
完整代码实现
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class CardStatistics {
// 定义牌的类型常量
static final String YELLOW_CARD = "黄牌";
static final String RED_CARD = "红牌";
// 球队类
static class Team {
String name;
int yellowCards;
int redCards;
public Team(String name) {
this.name = name;
this.yellowCards = 0;
this.redCards = 0;
}
// 计算总罚牌数
public int getTotalCards() {
return yellowCards + redCards;
}
// 计算罚牌加权分(黄牌1分,红牌2分)
public int getCardScore() {
return yellowCards + redCards * 2;
}
}
// 球员类
static class Player {
String name;
int number;
String team;
Map<String, Integer> cards = new HashMap<>();
public Player(String name, int number, String team) {
this.name = name;
this.number = number;
this.team = team;
cards.put("黄牌", 0);
cards.put("红牌", 0);
}
public void addCard(String cardType) {
cards.put(cardType, cards.get(cardType) + 1);
}
}
// 比赛记录类
static class MatchRecord {
String team;
String playerName;
String cardType;
public MatchRecord(String team, String playerName, String cardType) {
this.team = team;
this.playerName = playerName;
this.cardType = cardType;
}
}
public static void main(String[] args) {
List<MatchRecord> records = new ArrayList<>();
Map<String, Team> teams = new HashMap<>();
Map<String, Player> players = new HashMap<>();
Scanner scanner = new Scanner(System.in);
System.out.println("=== 足球比赛红黄牌统计系统 ===");
System.out.println("请输入球队信息(格式:队名 如:江苏队)");
System.out.print("请输入主队名称:");
String homeTeam = scanner.nextLine();
System.out.print("请输入客队名称:");
String awayTeam = scanner.nextLine();
teams.put(homeTeam, new Team(homeTeam));
teams.put(awayTeam, new Team(awayTeam));
System.out.println("\n请输入比赛事件记录(输入'end'结束)");
System.out.println("格式:球队 球员姓名 球员号码 牌类型(黄牌/红牌)");
System.out.println("示例:江苏队 张三 10 黄牌");
// 输入比赛事件
while (true) {
System.out.print("请输入:");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("end")) {
break;
}
String[] parts = input.split(" ");
if (parts.length != 4) {
System.out.println("输入格式错误,请重新输入!");
continue;
}
String teamName = parts[0];
String playerName = parts[1];
int playerNumber = Integer.parseInt(parts[2]);
String cardType = parts[3];
// 检查牌类型是否有效
if (!cardType.equals("黄牌") && !cardType.equals("红牌")) {
System.out.println("无效的牌类型,请输入'黄牌'或'红牌'!");
continue;
}
// 检查球队是否存在
if (!teams.containsKey(teamName)) {
System.out.println("球队不存在,请确认队名!");
continue;
}
// 记录比赛事件
records.add(new MatchRecord(teamName, playerName, cardType));
// 更新球队统计
Team team = teams.get(teamName);
if (cardType.equals("黄牌")) {
team.yellowCards++;
} else if (cardType.equals("红牌")) {
team.redCards++;
}
// 更新球员统计
String playerKey = teamName + "-" + playerName + "-" + playerNumber;
Player player = players.getOrDefault(playerKey,
new Player(playerName, playerNumber, teamName));
player.addCard(cardType);
players.put(playerKey, player);
}
scanner.close();
// 输出统计结果
printStatistics(teams, players, records);
// 比较哪队红黄牌更多
compareTeams(teams.get(homeTeam), teams.get(awayTeam));
}
// 打印统计信息
private static void printStatistics(Map<String, Team> teams,
Map<String, Player> players,
List<MatchRecord> records) {
System.out.println("\n===== 比赛统计报告 =====");
// 各队统计
System.out.println("\n【球队红黄牌统计】");
for (Team team : teams.values()) {
System.out.println(team.name + ":");
System.out.println(" 黄牌: " + team.yellowCards + " 张");
System.out.println(" 红牌: " + team.redCards + " 张");
System.out.println(" 总牌数: " + team.getTotalCards() + " 张");
System.out.println(" 加权分: " + team.getCardScore() + " 分");
System.out.println();
}
// 球员统计
System.out.println("\n【球员红黄牌统计】");
for (Player player : players.values()) {
System.out.println(player.team + " - " + player.name +
" (" + player.number + "号): " +
"黄牌 " + player.cards.get("黄牌") + " 张, " +
"红牌 " + player.cards.get("红牌") + " 张");
}
// 比赛记录
System.out.println("\n【比赛事件记录】");
for (int i = 0; i < records.size(); i++) {
MatchRecord record = records.get(i);
System.out.println((i + 1) + ". " + record.team +
" " + record.playerName +
" " + record.cardType);
}
}
// 比较两队红黄牌数量
private static void compareTeams(Team team1, Team team2) {
System.out.println("\n===== 红黄牌对比 =====");
// 比较黄牌
System.out.println("【黄牌数量对比】");
System.out.println(team1.name + " 黄牌: " + team1.yellowCards);
System.out.println(team2.name + " 黄牌: " + team2.yellowCards);
if (team1.yellowCards > team2.yellowCards) {
System.out.println("→ " + team1.name + " 黄牌更多");
} else if (team1.yellowCards < team2.yellowCards) {
System.out.println("→ " + team2.name + " 黄牌更多");
} else {
System.out.println("→ 两队黄牌数量相同");
}
// 比较红牌
System.out.println("\n【红牌数量对比】");
System.out.println(team1.name + " 红牌: " + team1.redCards);
System.out.println(team2.name + " 红牌: " + team2.redCards);
if (team1.redCards > team2.redCards) {
System.out.println("→ " + team1.name + " 红牌更多");
} else if (team1.redCards < team2.redCards) {
System.out.println("→ " + team2.name + " 红牌更多");
} else {
System.out.println("→ 两队红牌数量相同");
}
// 比较总牌数
System.out.println("\n【总牌数对比】");
System.out.println(team1.name + " 总牌数: " + team1.getTotalCards());
System.out.println(team2.name + " 总牌数: " + team2.getTotalCards());
if (team1.getTotalCards() > team2.getTotalCards()) {
System.out.println("→ " + team1.name + " 红黄牌总数更多");
} else if (team1.getTotalCards() < team2.getTotalCards()) {
System.out.println("→ " + team2.name + " 红黄牌总数更多");
} else {
System.out.println("→ 两队红黄牌总数相同");
}
// 比较加权分
System.out.println("\n【惩罚加权分对比】(黄牌1分,红牌2分)");
System.out.println(team1.name + " 加权分: " + team1.getCardScore());
System.out.println(team2.name + " 加权分: " + team2.getCardScore());
if (team1.getCardScore() > team2.getCardScore()) {
System.out.println("→ " + team1.name + " 惩罚更严重");
} else if (team1.getCardScore() < team2.getCardScore()) {
System.out.println("→ " + team2.name + " 惩罚更严重");
} else {
System.out.println("→ 两队惩罚严重程度相同");
}
// 最终结论
System.out.println("\n【最终结论】");
int team1Total = team1.getCardScore();
int team2Total = team2.getCardScore();
if (team1Total > team2Total) {
System.out.println("🏆 " + team1.name + " 红黄牌更多!");
} else if (team1Total < team2Total) {
System.out.println("🏆 " + team2.name + " 红黄牌更多!");
} else {
System.out.println("⚖️ 两队红黄牌数量持平!");
}
}
}
程序运行示例
=== 足球比赛红黄牌统计系统 ===
请输入球队信息(格式:队名 如:江苏队)
请输入主队名称:江苏队
请输入客队名称:浙江队
请输入比赛事件记录(输入'end'结束)
格式:球队 球员姓名 球员号码 牌类型(黄牌/红牌)
示例:江苏队 张三 10 黄牌
请输入:江苏队 张三 10 黄牌
请输入:江苏队 李四 8 黄牌
请输入:浙江队 王五 7 红牌
请输入:江苏队 小明 11 黄牌
请输入:浙江队 刘六 9 黄牌
请输入:end
===== 比赛统计报告 =====
【球队红黄牌统计】
江苏队:
黄牌: 3 张
红牌: 0 张
总牌数: 3 张
加权分: 3 分
浙江队:
黄牌: 1 张
红牌: 1 张
总牌数: 2 张
加权分: 3 分
【球员红黄牌统计】
江苏队 - 张三 (10号): 黄牌 1 张, 红牌 0 张
江苏队 - 李四 (8号): 黄牌 1 张, 红牌 0 张
浙江队 - 王五 (7号): 黄牌 0 张, 红牌 1 张
浙江队 - 刘六 (9号): 黄牌 1 张, 红牌 0 张
江苏队 - 小明 (11号): 黄牌 1 张, 红牌 0 张
【比赛事件记录】
1. 江苏队 张三 黄牌
2. 江苏队 李四 黄牌
3. 浙江队 王五 红牌
4. 江苏队 小明 黄牌
5. 浙江队 刘六 黄牌
===== 红黄牌对比 =====
【黄牌数量对比】
江苏队 黄牌: 3
浙江队 黄牌: 1
→ 江苏队 黄牌更多
【红牌数量对比】
江苏队 红牌: 0
浙江队 红牌: 1
→ 浙江队 红牌更多
【总牌数对比】
江苏队 总牌数: 3
浙江队 总牌数: 2
→ 江苏队 红黄牌总数更多
【惩罚加权分对比】(黄牌1分,红牌2分)
江苏队 加权分: 3
浙江队 加权分: 3
→ 两队惩罚严重程度相同
【最终结论】
⚖️ 两队红黄牌数量持平!
主要功能说明
- 数据录入:支持手动输入比赛事件
- 多维度统计:可比较黄牌、红牌、总牌数和加权分
- 球员统计:记录每位球员的红黄牌情况
- 灵活比较:支持不同维度的比较
- 加权计算:红牌权重高于黄牌(红牌2分,黄牌1分)
这个程序可以根据您的需求灵活调整,比如添加联赛统计、赛季统计等功能。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播