Java 案例:显示"背身拿球成功率"
你没有附上具体代码,我先按常见的数据统计场景给出一个完整可运行的 Java 示例,如果你的案例代码不同,把代码贴出来我可以针对性修改。

场景假设
球员数据包含:
backToGoalAttempts:背身拿球尝试次数backToGoalSuccess:背身拿球成功次数
成功率 = 成功次数 / 尝试次数 × 100%
完整示例代码
import java.util.*;
// 球员数据模型
class Player {
private String name;
private int backToGoalAttempts; // 背身拿球尝试次数
private int backToGoalSuccess; // 背身拿球成功次数
public Player(String name, int attempts, int success) {
this.name = name;
this.backToGoalAttempts = attempts;
this.backToGoalSuccess = success;
}
public String getName() { return name; }
public int getAttempts() { return backToGoalAttempts; }
public int getSuccess() { return backToGoalSuccess; }
// 计算背身拿球成功率(%)
public double getBackToGoalSuccessRate() {
if (backToGoalAttempts == 0) return 0.0; // 避免除零
return (double) backToGoalSuccess / backToGoalAttempts * 100;
}
}
public class BackToGoalStats {
public static void main(String[] args) {
List<Player> players = Arrays.asList(
new Player("张三", 20, 15),
new Player("李四", 10, 8),
new Player("王五", 0, 0) // 无尝试,需处理除零
);
System.out.println("===== 背身拿球成功率统计 =====");
System.out.printf("%-8s %-10s %-10s %-10s%n",
"球员", "尝试次数", "成功次数", "成功率");
for (Player p : players) {
System.out.printf("%-8s %-10d %-10d %.2f%%%n",
p.getName(),
p.getAttempts(),
p.getSuccess(),
p.getBackToGoalSuccessRate());
}
}
}
运行结果
===== 背身拿球成功率统计 =====
球员 尝试次数 成功次数 成功率
张三 20 15 75.00%
李四 10 8 80.00%
王五 0 0 0.00%
关键点说明
- 除零保护:
attempts == 0时直接返回 0,避免NaN或抛异常。 - 精度处理:用
(double)强转后再除,否则整数除法会丢失小数。 - 格式化输出:
%.2f%%保留两位小数并加上百分号。 - 数据聚合场景:若需求是"全队整体成功率",应对所有球员的成功数与尝试数分别求和后再除,而不是对各自成功率取平均(后者会被样本量小的球员拉偏)。
如果你需要:
- 从数据库/文件读取数据
- 按成功率排序
- 使用 Stream API 聚合
- 或者你案例中的具体类结构不同
把代码或需求细节发我,我直接改成对应版本。
版权声明:本站文章为原创整理,转载请注明出处。