Java小程序:单循环比赛,总分高者获胜的源代码

java5个人4项单循环比赛,每项决胜者得2分,平分各得一分,败者不得分,总分高着获胜的源代码

程序运行截图:


1.单循环赛,是所有参加比赛的队均能相遇一次

2.运动员类Sportsman
3.运动项目类SportsEvents
4.运动场地类PlayingField
5.测试类

运动员类

/**
 * 运动员
 * 
 */

public class Sportsman {

	int ID;

	String name;

	Map<Integer, SportsEvents> map;// 参赛项目

	int totalScore;// 总得分

	public Sportsman(int ID, String name) {
		this.ID = ID;
		this.name = name;
		// 默认参加所有四场赛事
		this.map = new HashMap<Integer, SportsEvents>();
		map.put(0, new SportsEvents(0, "项目1"));
		map.put(1, new SportsEvents(1, "项目2"));
		map.put(2, new SportsEvents(2, "项目3"));
		map.put(3, new SportsEvents(3, "项目4"));
	}

	public void setScore(SportsEvents spEvents) {
		totalScore += spEvents.scoreRule.score;
	}

}

运动项目类

/**
 * 运动项目 单循环赛,所有参加比赛的队均能相遇一次
 */
public class SportsEvents {
	int ID;
	String name;// 项目名称
	ScoreRule scoreRule;// 得分规则

	public SportsEvents(int ID, String name) {
		this.ID = ID;
		this.name = name;
	}

	public void setFlag(ScoreRule scoreRule) {
		this.scoreRule = scoreRule;
		String flag = scoreRule.flag;
		if ("失败".compareTo(flag) == 0) {
			scoreRule.score = 0;
		} else if ("胜利".compareTo(flag) == 0) {
			scoreRule.score = 2;
		} else if ("平局".compareTo(flag) == 0) {
			scoreRule.score = 1;
		}
	}

	// 得分规则类
	class ScoreRule {
		int score;// 分值 决胜者得2分 平分各得一分 败者不得分
		String flag;// 失败/胜利/平局标示
	}
}

运动场地类
 /** 比赛场地
 * 
 */
public class PlayingField {
	/**
	 * 开始比赛
	 * 
	 * @param sportsman
	 * @param sportsman2
	 * @param ID
	 */
	public void start(Sportsman sportsman, Sportsman sportsman2, int ID) {
		// 0<=Math.random()<1
		// 随机抽取一个数0 1 2
		// 0:sportsman 获胜 1:sportsman2获胜 2:平局
		int random = (int) (Math.random() * 3);
		switch (random) {
		case 0: {
			SportsEvents sportsEvents = sportsman.map.get(ID);
			ScoreRule scoreRule = sportsEvents.new ScoreRule();
			scoreRule.flag = "胜利";
			sportsEvents.setFlag(scoreRule);
			sportsman.setScore(sportsEvents);

			SportsEvents sportsEvents2 = sportsman2.map.get(ID);
			ScoreRule scoreRule2 = sportsEvents2.new ScoreRule();
			scoreRule2.flag = "失败";
			sportsEvents2.setFlag(scoreRule2);
			sportsman2.setScore(sportsEvents2);
		}
			break;
		case 1: {
			SportsEvents sportsEvents = sportsman.map.get(ID);
			ScoreRule scoreRule = sportsEvents.new ScoreRule();
			scoreRule.flag = "失败";
			sportsEvents.setFlag(scoreRule);
			sportsman.setScore(sportsEvents);

			SportsEvents sportsEvents2 = sportsman2.map.get(ID);
			ScoreRule scoreRule2 = sportsEvents2.new ScoreRule();
			scoreRule2.flag = "胜利";
			sportsEvents2.setFlag(scoreRule2);
			sportsman2.setScore(sportsEvents2);
		}
			break;
		case 2: {
			SportsEvents sportsEvents = sportsman.map.get(ID);
			ScoreRule scoreRule = sportsEvents.new ScoreRule();
			scoreRule.flag = "平局";
			sportsEvents.setFlag(scoreRule);
			sportsman.setScore(sportsEvents);

			SportsEvents sportsEvents2 = sportsman2.map.get(ID);
			ScoreRule scoreRule2 = sportsEvents2.new ScoreRule();
			scoreRule2.flag = "平局";
			sportsEvents2.setFlag(scoreRule2);
			sportsman2.setScore(sportsEvents2);
		}
			break;

		default:
			break;
		}
	}
}
测试类:

public class Test {
	public static final void main(String[] args) {
		// 单循环赛,是所有参加比赛的队均能相遇一次
		// java5个人4项单循环比赛,每项决胜者得2分,平分各得一分,败者不得分,总分高着获胜
		Sportsman[] sportsmans = new Sportsman[] { new Sportsman(0, "刘刚"),
				new Sportsman(1, "李毅"), new Sportsman(2, "赵四"),
				new Sportsman(3, "刘能"), new Sportsman(4, "王小宝") };
		PlayingField playingField = new PlayingField();
		for (int sportsEventsID = 0; sportsEventsID < 4; sportsEventsID++) {
			for (int i = 0; i < 5; i++) {
				for (int j = i + 1; j < 5; j++) {
					playingField.start(sportsmans[i], sportsmans[j],
							sportsEventsID);
				}
			}
		}
		for (int i = 0; i < sportsmans.length; i++) {

			System.out.println(sportsmans[i].name + "总得分:"
					+ sportsmans[i].totalScore);
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值