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);
}
}
}