java习题使用arraylist模拟四个队伍互相比赛
时间: 2023-06-28 07:14:00 浏览: 158
好的,下面是一个示例代码,可以帮助你使用ArrayList模拟四个队伍互相比赛:
```java
import java.util.ArrayList;
import java.util.Random;
public class TeamGame {
public static void main(String[] args) {
ArrayList<String> team1 = new ArrayList<>();
ArrayList<String> team2 = new ArrayList<>();
ArrayList<String> team3 = new ArrayList<>();
ArrayList<String> team4 = new ArrayList<>();
// 添加队员到队伍中
team1.add("小明");
team1.add("小红");
team1.add("小刚");
team2.add("张三");
team2.add("李四");
team2.add("王五");
team3.add("赵六");
team3.add("钱七");
team3.add("孙八");
team4.add("周九");
team4.add("吴十");
team4.add("郑11");
Random rand = new Random();
// 模拟比赛
for(int i = 0; i < 3; i++) { // 比赛3轮
System.out.println("第" + (i+1) + "轮比赛:");
System.out.println("--------------------");
// 每轮比赛,随机抽取两个队伍进行比赛
int r1 = rand.nextInt(4);
int r2 = rand.nextInt(4);
while(r1 == r2) { // 如果抽到的是同一个队伍,则重新抽取
r2 = rand.nextInt(4);
}
ArrayList<String> teamA = getTeamByIndex(r1, team1, team2, team3, team4);
ArrayList<String> teamB = getTeamByIndex(r2, team1, team2, team3, team4);
System.out.println("比赛:" + teamA.toString() + " vs " + teamB.toString());
// 模拟比赛结果
int scoreA = rand.nextInt(6); // 队伍A得分
int scoreB = rand.nextInt(6); // 队伍B得分
System.out.println("比分:" + scoreA + " : " + scoreB);
// 根据比赛结果,更新队伍积分
if(scoreA > scoreB) {
updateScore(teamA, 3);
updateScore(teamB, 0);
} else if(scoreA < scoreB) {
updateScore(teamA, 0);
updateScore(teamB, 3);
} else {
updateScore(teamA, 1);
updateScore(teamB, 1);
}
System.out.println("--------------------");
}
// 输出最终排名
System.out.println("比赛结束,最终排名:");
System.out.println("--------------------");
ArrayList<ArrayList<String>> allTeams = new ArrayList<>();
allTeams.add(team1);
allTeams.add(team2);
allTeams.add(team3);
allTeams.add(team4);
allTeams.sort((a, b) -> {
return getScore(b) - getScore(a);
});
for(int i = 0; i < 4; i++) {
System.out.println("第" + (i+1) + "名:" + allTeams.get(i).toString() + ",积分:" + getScore(allTeams.get(i)));
}
System.out.println("--------------------");
}
// 根据索引获取对应的队伍
public static ArrayList<String> getTeamByIndex(int index, ArrayList<String> team1, ArrayList<String> team2, ArrayList<String> team3, ArrayList<String> team4) {
switch(index) {
case 0:
return team1;
case 1:
return team2;
case 2:
return team3;
case 3:
return team4;
}
return null;
}
// 更新队伍积分
public static void updateScore(ArrayList<String> team, int score) {
for(int i = 0; i < team.size(); i++) {
String player = team.get(i);
int oldScore = getPlayerScore(player);
setPlayerScore(player, oldScore + score);
}
}
// 获取队员积分
public static int getPlayerScore(String player) {
// 这里可以使用Map或者数据库等方式保存队员积分信息
// 这里为了简化,使用一个简单的静态变量保存
return PlayerScore.getOrDefault(player, 0);
}
// 设置队员积分
public static void setPlayerScore(String player, int score) {
// 同样,这里可以使用Map或者数据库等方式保存队员积分信息
PlayerScore.put(player, score);
}
// 获取队伍积分
public static int getScore(ArrayList<String> team) {
int score = 0;
for(int i = 0; i < team.size(); i++) {
String player = team.get(i);
score += getPlayerScore(player);
}
return score;
}
// 队员积分,这里为了简化直接使用一个静态变量保存
public static final HashMap<String, Integer> PlayerScore = new HashMap<>();
}
```
这个代码中,我们创建了四个ArrayList来分别保存四个队伍的队员,然后模拟比赛过程。每轮比赛,我们随机选择两个队伍进行比赛,并根据比赛结果更新队伍的积分信息。最后根据积分信息,计算各个队伍的排名。
注意,这个示例代码中,我们使用了一个简单的静态变量来保存队员积分信息。在实际情况中,你可能需要使用Map或者数据库等方式来保存队员积分信息。
阅读全文