本文目录导读:

我来提供一个Java案例,统计两支球队的传球成功率并比较哪队更高。
完整代码实现
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 传球成功率统计案例
* 用于比较两支球队的传球成功率
*/
public class PassSuccessRate {
// 球队类
static class Team {
private String name;
private List<Player> players;
public Team(String name) {
this.name = name;
this.players = new ArrayList<>();
}
public void addPlayer(Player player) {
players.add(player);
}
public String getName() {
return name;
}
public List<Player> getPlayers() {
return players;
}
}
// 球员类
static class Player {
private String name;
private int totalPasses; // 总传球次数
private int successfulPasses; // 成功传球次数
public Player(String name, int totalPasses, int successfulPasses) {
this.name = name;
this.totalPasses = totalPasses;
this.successfulPasses = successfulPasses;
}
public int getTotalPasses() {
return totalPasses;
}
public int getSuccessfulPasses() {
return successfulPasses;
}
public double getSuccessRate() {
if (totalPasses == 0) return 0;
return (double) successfulPasses / totalPasses * 100;
}
public String getName() {
return name;
}
}
// 统计工具类
static class Statistics {
/**
* 计算球队的传球成功率
*/
public static double calculateTeamSuccessRate(Team team) {
int totalPasses = 0;
int successfulPasses = 0;
for (Player player : team.getPlayers()) {
totalPasses += player.getTotalPasses();
successfulPasses += player.getSuccessfulPasses();
}
if (totalPasses == 0) return 0;
return (double) successfulPasses / totalPasses * 100;
}
/**
* 显示球队统计数据
*/
public static void displayTeamStats(Team team) {
System.out.println("\n=== " + team.getName() + " 统计 ===");
System.out.println("球员\t\t总传球\t成功传球\t成功率");
System.out.println("----------------------------------------");
int teamTotal = 0;
int teamSuccessful = 0;
for (Player player : team.getPlayers()) {
System.out.printf("%-10s\t%6d\t%6d\t\t%.1f%%\n",
player.getName(),
player.getTotalPasses(),
player.getSuccessfulPasses(),
player.getSuccessRate());
teamTotal += player.getTotalPasses();
teamSuccessful += player.getSuccessfulPasses();
}
System.out.println("----------------------------------------");
System.out.printf("球队合计\t%6d\t%6d\t\t%.1f%%\n",
teamTotal, teamSuccessful,
calculateTeamSuccessRate(team));
}
/**
* 比较两队的传球成功率
*/
public static void compareTeams(Team team1, Team team2) {
double rate1 = calculateTeamSuccessRate(team1);
double rate2 = calculateTeamSuccessRate(team2);
System.out.println("\n=== 比较结果 ===");
System.out.printf("%s 传球成功率: %.2f%%\n", team1.getName(), rate1);
System.out.printf("%s 传球成功率: %.2f%%\n", team2.getName(), rate2);
if (rate1 > rate2) {
System.out.printf(">>> %s 的传球成功率更高!\n", team1.getName());
} else if (rate2 > rate1) {
System.out.printf(">>> %s 的传球成功率更高!\n", team2.getName());
} else {
System.out.println(">>> 两队传球成功率相同!");
}
}
}
// 主方法 - 测试示例
public static void main(String[] args) {
System.out.println("=== 足球传球成功率统计系统 ===\n");
// 创建两支球队
Team teamA = createTeamA();
Team teamB = createTeamB();
// 显示统计信息
Statistics.displayTeamStats(teamA);
Statistics.displayTeamStats(teamB);
// 比较两队成功率
Statistics.compareTeams(teamA, teamB);
// 添加交互式示例
interactiveExample();
}
/**
* 创建A队
*/
private static Team createTeamA() {
Team team = new Team("A队");
team.addPlayer(new Player("张三", 58, 45));
team.addPlayer(new Player("李四", 62, 50));
team.addPlayer(new Player("王五", 45, 38));
team.addPlayer(new Player("赵六", 55, 48));
team.addPlayer(new Player("孙七", 40, 35));
return team;
}
/**
* 创建B队
*/
private static Team createTeamB() {
Team team = new Team("B队");
team.addPlayer(new Player("周八", 50, 40));
team.addPlayer(new Player("吴九", 65, 52));
team.addPlayer(new Player("郑十", 48, 39));
team.addPlayer(new Player("钱一", 60, 41));
team.addPlayer(new Player("陈二", 35, 25));
return team;
}
/**
* 交互式示例 - 动态输入数据
*/
private static void interactiveExample() {
System.out.println("\n\n=== 交互式测试示例 ===");
System.out.println("以下为随机生成的测试数据:");
Random random = new Random();
// 动态创建球队
Team team1 = new Team("红队");
Team team2 = new Team("蓝队");
// 为红队添加球员数据
for (int i = 1; i <= 4; i++) {
int total = 30 + random.nextInt(40); // 30-69次传球
int success = total - random.nextInt(10); // 成功数
team1.addPlayer(new Player("红队球员" + i, total, success));
}
// 为蓝队添加球员数据
for (int i = 1; i <= 4; i++) {
int total = 30 + random.nextInt(40);
int success = total - random.nextInt(15); // 稍微加点难度
team2.addPlayer(new Player("蓝队球员" + i, total, success));
}
// 显示并比较
Statistics.displayTeamStats(team1);
Statistics.displayTeamStats(team2);
Statistics.compareTeams(team1, team2);
}
}
第二种实现方式:使用Map和Lambda表达式
import java.util.*;
import java.util.stream.Collectors;
/**
* 使用现代Java特性实现的传球统计
*/
public class PassStatsModern {
static class Player {
String name;
int totalPasses;
int successfulPasses;
Player(String name, int total, int success) {
this.name = name;
this.totalPasses = total;
this.successfulPasses = success;
}
double getSuccessRate() {
return totalPasses == 0 ? 0 : (double) successfulPasses / totalPasses * 100;
}
}
public static void main(String[] args) {
// 使用Map存储球队数据
Map<String, List<Player>> teams = new HashMap<>();
// 添加球队数据
teams.put("球队A", Arrays.asList(
new Player("球员1", 55, 48),
new Player("球员2", 48, 42),
new Player("球员3", 60, 55)
));
teams.put("球队B", Arrays.asList(
new Player("球员4", 50, 40),
new Player("球员5", 65, 49),
new Player("球员6", 42, 35)
));
// 计算每队的成功率
Map<String, Double> teamRates = teams.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> {
int total = entry.getValue().stream()
.mapToInt(p -> p.totalPasses).sum();
int success = entry.getValue().stream()
.mapToInt(p -> p.successfulPasses).sum();
return total == 0 ? 0 : (double) success / total * 100;
}
));
// 找出最高成功率的球队
String bestTeam = teamRates.entrySet().stream()
.max(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.orElse("无");
// 输出结果
teamRates.forEach((team, rate) ->
System.out.printf("%s 成功率: %.1f%%\n", team, rate));
System.out.printf("\n成功率最高的球队是: %s (%.1f%%)",
bestTeam, teamRates.get(bestTeam));
}
}
主要功能说明
- 数据类设计:包含Team(球队)和Player(球员)类
- 统计功能:计算个人和球队的传球成功率
- 比较功能:比较不同球队的成功率高低
- 显示功能:格式化显示统计数据和比较结果
运行结果示例
=== 足球传球成功率统计系统 ===
=== A队 统计 ===
球员 总传球 成功传球 成功率
----------------------------------------
张三 58 45 77.6%
李四 62 50 80.6%
王五 45 38 84.4%
赵六 55 48 87.3%
孙七 40 35 87.5%
----------------------------------------
球队合计 260 216 83.1%
=== B队 统计 ===
球员 总传球 成功传球 成功率
----------------------------------------
周八 50 40 80.0%
吴九 65 52 80.0%
郑十 48 39 81.3%
钱一 60 41 68.3%
陈二 35 25 71.4%
----------------------------------------
球队合计 258 197 76.4%
=== 比较结果 ===
A队 传球成功率: 83.08%
B队 传球成功率: 76.36%
>>> A队 的传球成功率更高!
这个案例提供了完整的解决方案,包含了面向对象设计和现代Java特性两种实现方式,可以根据需求选择使用。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播