本文目录导读:

我来帮你创建一个统计任意球直接得分的Java程序,这里给出两个方案:
简单的数据统计(使用List)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class 任意球统计 {
// 定义一个任意球事件的类
static class FreeKick {
String playerName; // 球员姓名
boolean isGoal; // 是否直接得分
int minute; // 比赛时间
public FreeKick(String playerName, boolean isGoal, int minute) {
this.playerName = playerName;
this.isGoal = isGoal;
this.minute = minute;
}
}
public static void main(String[] args) {
List<FreeKick> freeKicks = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
System.out.println("=== 任意球数据统计系统 ===");
System.out.println("请逐个输入任意球数据(输入'退出'结束)");
while (true) {
System.out.print("输入球员姓名(或输入'退出'):");
String name = scanner.nextLine();
if (name.equals("退出")) break;
System.out.print("是否直接得分(是/否):");
String isGoalStr = scanner.nextLine();
boolean isGoal = isGoalStr.equals("是");
System.out.print("比赛时间(分钟):");
int minute = Integer.parseInt(scanner.nextLine());
freeKicks.add(new FreeKick(name, isGoal, minute));
System.out.println("已记录!\n");
}
// 统计直接得分次数
int directGoalCount = 0;
List<FreeKick> directGoals = new ArrayList<>();
for (FreeKick fk : freeKicks) {
if (fk.isGoal) {
directGoalCount++;
directGoals.add(fk);
}
}
// 输出结果
System.out.println("\n=== 统计结果 ===");
System.out.println("总任意球次数:" + freeKicks.size());
System.out.println("直接得分次数:" + directGoalCount);
System.out.println("直接得分率:" + (freeKicks.size() > 0 ?
String.format("%.2f%%", (double)directGoalCount/freeKicks.size()*100) : "0%"));
if (directGoals.size() > 0) {
System.out.println("\n直接得分详情:");
for (FreeKick fk : directGoals) {
System.out.println("球员:" + fk.playerName +
",时间:" + fk.minute + "分钟");
}
}
scanner.close();
}
}
使用HashMap统计每个球员的得分
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class 任意球球员统计 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 存储每个球员的任意球统计数据
Map<String, int[]> playerStats = new HashMap<>();
// int[] 数组:[0]总任意球次数, [1]直接得分次数
System.out.println("=== 球员任意球统计分析 ===");
System.out.println("输入格式:球员名 是否得分(true/false)");
System.out.println("输入'end'结束");
while (true) {
System.out.print("请输入数据:");
String input = scanner.nextLine();
if (input.equals("end")) break;
String[] parts = input.split(" ");
if (parts.length != 2) {
System.out.println("格式错误,请重新输入!");
continue;
}
String playerName = parts[0];
boolean isGoal = Boolean.parseBoolean(parts[1]);
// 更新统计数据
int[] stats = playerStats.computeIfAbsent(playerName, k -> new int[2]);
stats[0]++; // 总次数+1
if (isGoal) stats[1]++; // 得分次数+1
}
// 输出统计结果
System.out.println("\n=== 球员任意球统计 ===");
int totalFreeKicks = 0;
int totalGoals = 0;
for (Map.Entry<String, int[]> entry : playerStats.entrySet()) {
String player = entry.getKey();
int[] stats = entry.getValue();
totalFreeKicks += stats[0];
totalGoals += stats[1];
System.out.println("球员:" + player);
System.out.println(" 总任意球:" + stats[0] + "次");
System.out.println(" 直接得分:" + stats[1] + "次");
System.out.println(" 得分率:" + (stats[0] > 0 ?
String.format("%.1f%%", (double)stats[1]/stats[0]*100) : "0%"));
}
System.out.println("\n=== 总体统计 ===");
System.out.println("总任意球次数:" + totalFreeKicks);
System.out.println("总直接得分:" + totalGoals);
scanner.close();
}
}
使用面向对象编程
import java.util.ArrayList;
import java.util.List;
public class 任意球统计系统 {
// 球员类
static class Player {
private String name;
private int totalFreeKicks;
private int directGoals;
public Player(String name) {
this.name = name;
this.totalFreeKicks = 0;
this.directGoals = 0;
}
public void addFreeKick(boolean isGoal) {
totalFreeKicks++;
if (isGoal) directGoals++;
}
public double getScoreRate() {
return totalFreeKicks > 0 ? (double)directGoals/totalFreeKicks : 0;
}
public String getName() { return name; }
public int getTotalFreeKicks() { return totalFreeKicks; }
public int getDirectGoals() { return directGoals; }
}
// 比赛类
static class Match {
private List<Player> players = new ArrayList<>();
// 记录一次任意球
public void recordFreeKick(String playerName, boolean isGoal) {
// 查找球员,如果没有则创建
Player player = findPlayer(playerName);
if (player == null) {
player = new Player(playerName);
players.add(player);
}
player.addFreeKick(isGoal);
}
private Player findPlayer(String name) {
for (Player p : players) {
if (p.getName().equals(name)) {
return p;
}
}
return null;
}
// 统计总的直接得分
public int getTotalDirectGoals() {
int total = 0;
for (Player p : players) {
total += p.getDirectGoals();
}
return total;
}
// 展示统计信息
public void displayStats() {
System.out.println("\n=== 球队任意球统计报告 ===");
int totalKicks = 0;
for (Player p : players) {
System.out.println(p.getName() + ":");
System.out.println(" 总任意球:" + p.getTotalFreeKicks());
System.out.println(" 直接得分:" + p.getDirectGoals());
System.out.println(String.format(" 得分率:%.1f%%", p.getScoreRate()*100));
totalKicks += p.getTotalFreeKicks();
}
System.out.println("球队总任意球:" + totalKicks);
System.out.println("球队直接得分:" + getTotalDirectGoals());
}
}
public static void main(String[] args) {
Match match = new Match();
// 模拟数据
match.recordFreeKick("梅西", true);
match.recordFreeKick("C罗", true);
match.recordFreeKick("梅西", false);
match.recordFreeKick("贝克汉姆", true);
match.recordFreeKick("C罗", false);
match.recordFreeKick("梅西", true);
match.recordFreeKick("内马尔", false);
match.displayStats();
System.out.println("\n总的任意球直接得分次数:" + match.getTotalDirectGoals());
}
}
使用方法:
- 方案一和方案二:运行时通过控制台输入数据
- 方案三:直接在代码中修改模拟数据
示例输出(方案三):
=== 球队任意球统计报告 ===
梅西:
总任意球:3
直接得分:2
得分率:66.7%
C罗:
总任意球:2
直接得分:1
得分率:50.0%
贝克汉姆:
总任意球:1
直接得分:1
得分率:100.0%
内马尔:
总任意球:1
直接得分:0
得分率:0.0%
球队总任意球:7
球队直接得分:4
总的任意球直接得分次数:4
你可以根据实际需求选择合适的方案,如果需要处理比赛数据文件,可以进一步扩展这些程序来读取文件。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播