本文目录导读:

这是一个Java案例,用于统计球员评分最高者是谁,我会提供一个完整的示例,包括球员类定义、数据录入和最高评分统计。
完整代码示例
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 球员类
class Player {
private String name;
private double score;
private String position;
public Player(String name, double score, String position) {
this.name = name;
this.score = score;
this.position = position;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
public String getPosition() {
return position;
}
@Override
public String toString() {
return "球员姓名: " + name + ", 评分: " + score + ", 位置: " + position;
}
}
// 主类
public class PlayerScoreStatistics {
public static void main(String[] args) {
// 方式一:静态数据测试
System.out.println("=== 方式一:静态数据测试 ===");
testWithStaticData();
// 方式二:用户输入数据
System.out.println("\n=== 方式二:用户输入数据 ===");
testWithUserInput();
}
// 静态数据测试方法
public static void testWithStaticData() {
// 创建一个球员列表
List<Player> players = new ArrayList<>();
players.add(new Player("詹姆斯", 9.8, "前锋"));
players.add(new Player("库里", 9.5, "后卫"));
players.add(new Player("杜兰特", 9.7, "前锋"));
players.add(new Player("保罗", 9.1, "后卫"));
players.add(new Player("戴维斯", 9.3, "中锋"));
// 找出评分最高的球员
Player highestScored = findHighestScoredPlayer(players);
System.out.println("所有球员信息:");
for (Player p : players) {
System.out.println(p);
}
System.out.println("\n评分最高的球员是: " + highestScored.getName());
System.out.println("详细资料: " + highestScored);
}
// 用户输入测试方法
public static void testWithUserInput() {
Scanner scanner = new Scanner(System.in);
List<Player> players = new ArrayList<>();
System.out.print("请输入球员数量: ");
int count = scanner.nextInt();
scanner.nextLine(); // 消耗换行符
// 输入球员信息
for (int i = 0; i < count; i++) {
System.out.println("\n请输入第 " + (i + 1) + " 位球员信息:");
System.out.print("姓名: ");
String name = scanner.nextLine();
System.out.print("评分 (0-10): ");
double score = scanner.nextDouble();
scanner.nextLine(); // 消耗换行符
System.out.print("位置 (前锋/后卫/中锋): ");
String position = scanner.nextLine();
players.add(new Player(name, score, position));
}
// 找出最高分球员
Player highestScored = findHighestScoredPlayer(players);
System.out.println("\n========== 统计结果 ==========");
System.out.println("所有球员信息:");
// 使用索引遍历
for (int i = 0; i < players.size(); i++) {
System.out.println((i + 1) + ". " + players.get(i));
}
System.out.println("\n评分最高的球员是: " + highestScored.getName());
System.out.println("详细资料: " + highestScored);
scanner.close();
}
// 找出评分最高的球员方法
public static Player findHighestScoredPlayer(List<Player> players) {
if (players == null || players.isEmpty()) {
return null;
}
Player highest = players.get(0);
for (Player player : players) {
if (player.getScore() > highest.getScore()) {
highest = player;
}
}
return highest;
}
// 扩展方法:找出所有最高分的球员(可能出现并列)
public static List<Player> findAllHighestScoredPlayers(List<Player> players) {
List<Player> highestPlayers = new ArrayList<>();
if (players == null || players.isEmpty()) {
return highestPlayers;
}
double maxScore = findHighestScoredPlayer(players).getScore();
for (Player player : players) {
if (player.getScore() == maxScore) {
highestPlayers.add(player);
}
}
return highestPlayers;
}
}
改进版本(面向对象更完善)
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
// 球员管理类
class PlayerManager {
private List<Player> players;
public PlayerManager() {
this.players = new ArrayList<>();
}
// 添加球员
public void addPlayer(Player player) {
players.add(player);
}
// 批量添加球员
public void addPlayers(List<Player> newPlayers) {
players.addAll(newPlayers);
}
// 移除球员
public boolean removePlayer(String name) {
return players.removeIf(p -> p.getName().equals(name));
}
// 获取评分最高的球员
public Player getHighestScoredPlayer() {
if (players.isEmpty()) {
return null;
}
return players.stream()
.max(Comparator.comparingDouble(Player::getScore))
.orElse(null);
}
// 获取所有评分最高的球员(处理并列情况)
public List<Player> getAllHighestScoredPlayers() {
Player highest = getHighestScoredPlayer();
if (highest == null) {
return new ArrayList<>();
}
List<Player> result = new ArrayList<>();
for (Player p : players) {
if (p.getScore() == highest.getScore()) {
result.add(p);
}
}
return result;
}
// 按评分排序
public void sortByScore() {
players.sort(Comparator.comparingDouble(Player::getScore).reversed());
}
// 获取球员列表
public List<Player> getPlayers() {
return new ArrayList<>(players);
}
// 显示所有球员
public void displayAllPlayers() {
int index = 1;
for (Player p : players) {
System.out.println(index++ + ". " + p);
}
}
}
public class PlayerScoreDemo2 {
public static void main(String[] args) {
PlayerManager manager = new PlayerManager();
// 添加球员数据
manager.addPlayer(new Player("球员A", 8.9, "前锋"));
manager.addPlayer(new Player("球员B", 9.5, "后卫"));
manager.addPlayer(new Player("球员C", 9.5, "中锋")); // 与B并列最高
manager.addPlayer(new Player("球员D", 8.7, "后卫"));
System.out.println("所有球员:");
manager.displayAllPlayers();
System.out.println("\n评分最高的球员:");
Player highest = manager.getHighestScoredPlayer();
System.out.println(highest);
System.out.println("\n所有最高评分的球员:");
List<Player> topPlayers = manager.getAllHighestScoredPlayers();
for (Player p : topPlayers) {
System.out.println(p);
}
System.out.println("\n按评分从高到低排序:");
manager.sortByScore();
manager.displayAllPlayers();
}
}
运行示例
=== 方式一:静态数据测试 ===
所有球员信息:
球员姓名: 詹姆斯, 评分: 9.8, 位置: 前锋
球员姓名: 库里, 评分: 9.5, 位置: 后卫
球员姓名: 杜兰特, 评分: 9.7, 位置: 前锋
球员姓名: 保罗, 评分: 9.1, 位置: 后卫
球员姓名: 戴维斯, 评分: 9.3, 位置: 中锋
评分最高的球员是: 詹姆斯
详细资料: 球员姓名: 詹姆斯, 评分: 9.8, 位置: 前锋
=== 方式二:用户输入数据 ===
请输入球员数量: 3
请输入第 1 位球员信息:
姓名: 张三
评分 (0-10): 8.5
位置 (前锋/后卫/中锋): 前锋
请输入第 2 位球员信息:
姓名: 李四
评分 (0-10): 9.2
位置 (前锋/后卫/中锋): 后卫
请输入第 3 位球员信息:
姓名: 王五
评分 (0-10): 9.0
位置 (前锋/后卫/中锋): 中锋
========== 统计结果 ==========
所有球员信息:
1. 球员姓名: 张三, 评分: 8.5, 位置: 前锋
2. 球员姓名: 李四, 评分: 9.2, 位置: 后卫
3. 球员姓名: 王五, 评分: 9.0, 位置: 中锋
评分最高的球员是: 李四
详细资料: 球员姓名: 李四, 评分: 9.2, 位置: 后卫
代码说明
主要功能:
- 数据录入:支持静态数据和用户输入两种方式
- 统计功能:找出评分最高的球员
- 扩展功能:处理并列最高分的情况、按评分排序等
核心方法:
findHighestScoredPlayer():遍历找出最高分球员findAllHighestScoredPlayers():找出所有并列最高分的球员sortByScore():按评分排序
面向对象设计:
- Player类:封装球员信息(姓名、评分、位置)
- PlayerManager类:管理球员数据和统计操作
- 使用Java集合框架(List、ArrayList)存储数据
这个案例展示了Java面向对象编程的基本概念,包括封装、集合操作和算法实现。