本文目录导读:

我来为您编写一个统计球员评分最高者的Java案例,这里提供两个版本:一个基础版,一个面向对象版。
基础版(使用数组)
import java.util.Scanner;
public class PlayerScoreStats {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入球员数量:");
int n = scanner.nextInt();
scanner.nextLine(); // 消耗换行符
String[] names = new String[n];
double[] scores = new double[n];
// 输入球员信息
for (int i = 0; i < n; i++) {
System.out.println("\n请输入第" + (i + 1) + "名球员信息:");
System.out.print("姓名:");
names[i] = scanner.nextLine();
System.out.print("评分(0-100):");
scores[i] = scanner.nextDouble();
scanner.nextLine(); // 消耗换行符
}
// 找出最高分球员
double maxScore = scores[0];
String maxPlayer = names[0];
for (int i = 1; i < n; i++) {
if (scores[i] > maxScore) {
maxScore = scores[i];
maxPlayer = names[i];
}
}
// 输出结果
System.out.println("\n========== 统计结果 ==========");
System.out.println("最高评分球员:" + maxPlayer);
System.out.println("最高评分:" + maxScore);
// 显示所有球员信息
System.out.println("\n所有球员评分:");
for (int i = 0; i < n; i++) {
System.out.println(names[i] + ":" + scores[i] + " 分");
}
}
}
面向对象版(更规范)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 球员类
class Player {
private String name;
private double score;
public Player(String name, double score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
@Override
public String toString() {
return name + ":" + score + " 分";
}
}
// 统计类
class PlayerStats {
private List<Player> players;
public PlayerStats() {
players = new ArrayList<>();
}
// 添加球员
public void addPlayer(Player player) {
players.add(player);
}
// 获取最高评分球员
public Player getHighestScorePlayer() {
if (players.isEmpty()) {
return null;
}
Player highest = players.get(0);
for (Player player : players) {
if (player.getScore() > highest.getScore()) {
highest = player;
}
}
return highest;
}
// 获取所有球员
public List<Player> getAllPlayers() {
return players;
}
// 获取平均分
public double getAverageScore() {
if (players.isEmpty()) return 0;
double sum = 0;
for (Player player : players) {
sum += player.getScore();
}
return sum / players.size();
}
}
// 主程序
public class PlayerScoreAnalyzer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
PlayerStats stats = new PlayerStats();
System.out.println("========== 球员评分统计系统 ==========");
System.out.print("请输入球员数量:");
int playerCount = scanner.nextInt();
scanner.nextLine();
// 输入球员数据
for (int i = 0; i < playerCount; i++) {
System.out.println("\n----- 第" + (i + 1) + "名球员 -----");
System.out.print("姓名:");
String name = scanner.nextLine();
System.out.print("评分(0-100):");
double score = scanner.nextDouble();
scanner.nextLine();
stats.addPlayer(new Player(name, score));
}
// 输出统计结果
System.out.println("\n========== 统计结果 ==========");
Player highest = stats.getHighestScorePlayer();
if (highest != null) {
System.out.println("■ 最高评分球员:" + highest.getName());
System.out.println(" 最高评分:" + highest.getScore() + " 分");
}
System.out.println("■ 平均评分:" + String.format("%.2f", stats.getAverageScore()) + " 分");
// 显示所有球员
System.out.println("\n所有球员评分排名:");
List<Player> allPlayers = stats.getAllPlayers();
// 按评分从高到低排序
allPlayers.sort((p1, p2) -> Double.compare(p2.getScore(), p1.getScore()));
for (int i = 0; i < allPlayers.size(); i++) {
Player player = allPlayers.get(i);
System.out.println((i + 1) + ". " + player.getName() + ":" + player.getScore() + " 分");
if (i == 0) {
System.out.println(" ↑ 最高分");
}
}
}
}
带成绩等级评判的完整版
import java.util.*;
class BasketballPlayer {
private String name;
private double score;
private String grade;
public BasketballPlayer(String name, double score) {
this.name = name;
this.score = score;
this.grade = calculateGrade(score);
}
// 根据分数计算等级
private String calculateGrade(double score) {
if (score >= 90) return "S";
else if (score >= 80) return "A";
else if (score >= 70) return "B";
else if (score >= 60) return "C";
else return "D";
}
public String getName() { return name; }
public double getScore() { return score; }
public String getGrade() { return grade; }
@Override
public String toString() {
return String.format("%-10s 评分:%5.2f 等级:%s", name, score, grade);
}
}
public class BasketballScoreAnalyzer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<BasketballPlayer> players = new ArrayList<>();
System.out.println("========== 篮球球员评分统计系统 ==========");
// 预设一些球员数据
System.out.println("是否手动输入球员数据?(y/n)");
String choice = scanner.next();
if (choice.equalsIgnoreCase("y")) {
System.out.print("请输入球员人数:");
int n = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < n; i++) {
System.out.println("\n第" + (i+1) + "名球员:");
System.out.print("姓名:");
String name = scanner.nextLine();
System.out.print("评分(0-100):");
double score = scanner.nextDouble();
scanner.nextLine();
players.add(new BasketballPlayer(name, score));
}
} else {
// 使用示例数据
players.add(new BasketballPlayer("詹姆斯", 95.5));
players.add(new BasketballPlayer("库里", 92.0));
players.add(new BasketballPlayer("杜兰特", 89.5));
players.add(new BasketballPlayer("字母哥", 88.0));
players.add(new BasketballPlayer("约基奇", 93.5));
}
// 找出最高分球员
BasketballPlayer highest = players.get(0);
for (BasketballPlayer player : players) {
if (player.getScore() > highest.getScore()) {
highest = player;
}
}
// 按评分排序
players.sort((p1, p2) -> Double.compare(p2.getScore(), p1.getScore()));
// 输出结果
System.out.println("\n========== 球员评分排名 ==========");
for (int i = 0; i < players.size(); i++) {
System.out.println((i + 1) + ". " + players.get(i));
}
System.out.println("\n========== 统计结果 ==========");
System.out.println("🏆 最高分球员:" + highest.getName());
System.out.println(" 评分:" + highest.getScore() + " 分");
System.out.println(" 等级:" + highest.getGrade());
// 统计等级分布
Map<String, Integer> gradeCount = new HashMap<>();
for (BasketballPlayer player : players) {
gradeCount.merge(player.getGrade(), 1, Integer::sum);
}
System.out.println("\n等级分布:");
gradeCount.forEach((grade, count) ->
System.out.println(" " + grade + "级:" + count + "人"));
// 计算平均分
double avg = players.stream()
.mapToDouble(BasketballPlayer::getScore)
.average()
.orElse(0);
System.out.println("\n平均分:" + String.format("%.2f", avg));
}
}
使用说明
- 版本一:最适合初学者,使用基本数组和循环
- 版本二:面向对象设计,包含类、封装和集合
- 版本三:功能最完整,包含等级评定、排名和统计
运行示例输出:
========== 球员评分排名 ==========
1. 詹姆斯:95.50 分 等级:S
2. 约基奇:93.50 分 等级:S
3. 库里:92.00 分 等级:S
4. 杜兰特:89.50 分 等级:A
5. 字母哥:88.00 分 等级:A
========== 统计结果 ==========
🏆 最高分球员:詹姆斯
评分:95.5 分
等级:S
等级分布:
S级:3人
A级:2人
平均分:91.70
您可以根据需要选择适合的版本使用,如果还需要其他功能,比如处理平局情况、支持评分标准修改等,请告诉我!