java案例统计角球数哪边领先?

wen java案例 21

本文目录导读:

java案例统计角球数哪边领先?

  1. 方案1:基础控制台版本
  2. 方案2:面向对象版本(更实用)
  3. 方案3:带图形化界面版本(Swing GUI)
  4. 使用说明

我来为您创建一个Java案例,统计并比较两支球队的角球数,判断哪边领先。

方案1:基础控制台版本

import java.util.Scanner;
public class CornerKickStats {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("=== 角球数统计系统 ===");
        System.out.print("请输入主队名称:");
        String homeTeam = scanner.nextLine();
        System.out.print("请输入客队名称:");
        String awayTeam = scanner.nextLine();
        // 初始化角球数
        int homeCorners = 0;
        int awayCorners = 0;
        while (true) {
            System.out.println("\n当前比分 - 角球数:");
            System.out.println(homeTeam + ": " + homeCorners + " 个角球");
            System.out.println(awayTeam + ": " + awayCorners + " 个角球");
            System.out.print("\n输入:H(主队角球) A(客队角球) Q(退出):");
            String input = scanner.nextLine().toUpperCase();
            if (input.equals("Q")) {
                break;
            } else if (input.equals("H")) {
                homeCorners++;
            } else if (input.equals("A")) {
                awayCorners++;
            } else {
                System.out.println("无效输入,请输入 H、A 或 Q");
            }
        }
        // 输出最终结果
        System.out.println("\n=== 比赛结束最终统计 ===");
        System.out.println(homeTeam + ": " + homeCorners + " 个角球");
        System.out.println(awayTeam + ": " + awayCorners + " 个角球");
        // 判断哪边领先
        if (homeCorners > awayCorners) {
            System.out.println("🏆 " + homeTeam + " 在角球数上领先!");
        } else if (awayCorners > homeCorners) {
            System.out.println("🏆 " + awayTeam + " 在角球数上领先!");
        } else {
            System.out.println("🤝 两队角球数持平!");
        }
    }
}

方案2:面向对象版本(更实用)

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class FootballCornerTracker {
    private static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        // 创建比赛对象
        Match match = createMatch();
        // 开始比赛
        match.startMatch();
        // 显示最终结果
        match.displayFinalResult();
    }
    private static Match createMatch() {
        System.out.println("=== 足球角球数统计系统 ===");
        System.out.print("请输入主队名称:");
        String homeTeam = scanner.nextLine();
        System.out.print("请输入客队名称:");
        String awayTeam = scanner.nextLine();
        return new Match(homeTeam, awayTeam);
    }
}
// 比赛类
class Match {
    private Team homeTeam;
    private Team awayTeam;
    private List<CornerEvent> cornerEvents = new ArrayList<>();
    public Match(String homeName, String awayName) {
        this.homeTeam = new Team(homeName);
        this.awayTeam = new Team(awayName);
    }
    public void startMatch() {
        System.out.println("\n比赛开始!");
        while (true) {
            displayCurrentStats();
            System.out.print("\n操作:1-主队角球 2-客队角球 3-回滚 0-结束比赛:");
            int choice = getIntInput();
            if (choice == 0) {
                break;
            } else if (choice == 1) {
                addCorner(homeTeam, awayTeam);
            } else if (choice == 2) {
                addCorner(awayTeam, homeTeam);
            } else if (choice == 3) {
                rollbackLastEvent();
            } else {
                System.out.println("无效操作,请重新选择");
            }
        }
    }
    private void addCorner(Team team, Team opponent) {
        team.addCorner();
        System.out.println("⚽ " + team.getName() + " 获得角球!");
        // 实时判断领先情况
        String leadingInfo = determineLeader();
        System.out.println("📊 " + leadingInfo);
    }
    private void rollbackLastEvent() {
        if (cornerEvents.isEmpty()) {
            System.out.println("暂无事件可回滚");
            return;
        }
        CornerEvent event = cornerEvents.remove(cornerEvents.size() - 1);
        event.getTeam().removeCorner();
        System.out.println("↩️ 已回滚:" + event.getTeam().getName() + " 的一个角球");
    }
    private void displayCurrentStats() {
        System.out.println("\n--- 当前统计数据 ---");
        System.out.printf("%-15s %d 个角球%n", homeTeam.getName(), homeTeam.getCorners());
        System.out.printf("%-15s %d 个角球%n", awayTeam.getName(), awayTeam.getCorners());
    }
    public String determineLeader() {
        int homeCorners = homeTeam.getCorners();
        int awayCorners = awayTeam.getCorners();
        if (homeCorners > awayCorners) {
            return homeTeam.getName() + " 领先 " + (homeCorners - awayCorners) + " 个角球";
        } else if (awayCorners > homeCorners) {
            return awayTeam.getName() + " 领先 " + (awayCorners - homeCorners) + " 个角球";
        } else {
            return "双方角球数持平";
        }
    }
    public void displayFinalResult() {
        System.out.println("\n=========== 比赛最终统计 ===========");
        System.out.printf("%-15s %d 个角球%n", homeTeam.getName(), homeTeam.getCorners());
        System.out.printf("%-15s %d 个角球%n", awayTeam.getName(), awayTeam.getCorners());
        System.out.println("总角球数:" + (homeTeam.getCorners() + awayTeam.getCorners()));
        String leader = determineLeader();
        if (leader.contains("持平")) {
            System.out.println("🤝 结果:" + leader);
        } else {
            String[] parts = leader.split(" ");
            System.out.println("🏆 结果:" + parts[0] + " 在角球数上领先!");
        }
    }
    private int getIntInput() {
        try {
            return Integer.parseInt(scanner.nextLine());
        } catch (NumberFormatException e) {
            return -1;
        }
    }
    // 内部事件类
    private class CornerEvent {
        private Team team;
        public CornerEvent(Team team) {
            this.team = team;
        }
        public Team getTeam() {
            return team;
        }
    }
    private void addCorner(Team team, Team opponent) {
        team.addCorner();
        cornerEvents.add(new CornerEvent(team));
    }
}
// 队伍类
class Team {
    private String name;
    private int cornerCount;
    public Team(String name) {
        this.name = name;
        this.cornerCount = 0;
    }
    public String getName() {
        return name;
    }
    public int getCorners() {
        return cornerCount;
    }
    public void addCorner() {
        cornerCount++;
    }
    public void removeCorner() {
        if (cornerCount > 0) {
            cornerCount--;
        }
    }
}

方案3:带图形化界面版本(Swing GUI)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CornerKickGUI extends JFrame {
    private JLabel homeLabel;
    private JLabel awayLabel;
    private JLabel statusLabel;
    private int homeCorners = 0;
    private int awayCorners = 0;
    private String homeTeam = "主队";
    private String awayTeam = "客队";
    public CornerKickGUI() {
        setTitle("角球数统计系统");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        // 输入队伍名称
        homeTeam = JOptionPane.showInputDialog("请输入主队名称:", "主队");
        awayTeam = JOptionPane.showInputDialog("请输入客队名称:", "客队");
        // 中间面板
        JPanel centerPanel = new JPanel(new GridLayout(3, 1));
        homeLabel = new JLabel(homeTeam + ": 0 个角球", SwingConstants.CENTER);
        homeLabel.setFont(new Font("Arial", Font.BOLD, 18));
        awayLabel = new JLabel(awayTeam + ": 0 个角球", SwingConstants.CENTER);
        awayLabel.setFont(new Font("Arial", Font.BOLD, 18));
        statusLabel = new JLabel("比赛开始!", SwingConstants.CENTER);
        statusLabel.setFont(new Font("Arial", Font.PLAIN, 16));
        statusLabel.setForeground(Color.BLUE);
        centerPanel.add(homeLabel);
        centerPanel.add(awayLabel);
        centerPanel.add(statusLabel);
        // 按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout());
        JButton homeButton = new JButton(homeTeam + " 角球");
        JButton awayButton = new JButton(awayTeam + " 角球");
        JButton resetButton = new JButton("重置");
        homeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                homeCorners++;
                updateDisplay();
            }
        });
        awayButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                awayCorners++;
                updateDisplay();
            }
        });
        resetButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                homeCorners = 0;
                awayCorners = 0;
                updateDisplay();
            }
        });
        buttonPanel.add(homeButton);
        buttonPanel.add(awayButton);
        buttonPanel.add(resetButton);
        add(centerPanel, BorderLayout.CENTER);
        add(buttonPanel, BorderLayout.SOUTH);
        updateDisplay();
    }
    private void updateDisplay() {
        homeLabel.setText(homeTeam + ": " + homeCorners + " 个角球");
        awayLabel.setText(awayTeam + ": " + awayCorners + " 个角球");
        if (homeCorners > awayCorners) {
            statusLabel.setText("🏆 " + homeTeam + " 领先 " + (homeCorners - awayCorners) + " 个角球");
            statusLabel.setForeground(Color.GREEN);
        } else if (awayCorners > homeCorners) {
            statusLabel.setText("🏆 " + awayTeam + " 领先 " + (awayCorners - homeCorners) + " 个角球");
            statusLabel.setForeground(Color.GREEN);
        } else {
            statusLabel.setText("🤝 双方角球数持平");
            statusLabel.setForeground(Color.ORANGE);
        }
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CornerKickGUI().setVisible(true);
            }
        });
    }
}

使用说明

控制台版用法:

  1. 输入主队和客队名称
  2. 输入 H 记录主队角球,输入 A 记录客队角球
  3. 输入 Q 结束比赛
  4. 系统自动判断哪边领先

GUI版特点:

  • 可视化界面
  • 实时更新数据
  • 颜色提示领先状态
  • 支持重置功能

运行方式:直接复制代码到Java编译器中运行即可,可以根据实际需求选择适合的版本。

抱歉,评论功能暂时关闭!