package step2; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; class Player implements Comparable<Player>{ //玩家 String name; int score; public Player(String name) { this.name = name; this.score = 0; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } //补充代码:覆写toString 方法 //补充代码:覆写compareTo方法,按照score降序排序 } public class Test { public static Scanner sc = new Scanner(System.in); public static void playAGame(Player p) { //玩家p玩一局游戏 int score = 0; //补充代码:玩一局游戏,规则如上一关。 p.setScore(score); } public static void main(String[] args) { List<Player> players = new ArrayList<Player>(); //玩家列表 String again = "N"; do { System.out.println("请输入玩家姓名:"); String name = sc.nextLine(); Player p = new Player(name); //补充代码:将玩家p添加到玩家列表 playAGame(p); System.out.println("是否再玩一局?(Y/N):"); again = sc.nextLine(); }while("Y".equals(again) || "y".equals(again)); //补充代码:先对players进行排序,再遍历输出 sc.close(); } }
时间: 2024-03-31 17:35:20 浏览: 197
这是一个Java程序,实现了一个简单的玩家得分排行榜。下面是代码的详细说明:
- Player类:实现了Comparable接口,用来表示玩家。其中包含了玩家的姓名和分数,以及相应的get和set方法。同时,还覆写了toString和compareTo方法,toString方法用于输出玩家的姓名和分数,compareTo方法按照分数降序排序。
- playAGame方法:定义了一个玩家玩游戏的过程,包含了玩游戏的规则和计算分数的逻辑。在玩游戏的过程中,玩家的分数会被计算出来,并通过setScore方法设置到Player对象中。
- main方法:定义了玩家列表和游戏的主逻辑。在游戏开始前,需要输入玩家的姓名,并将其添加到玩家列表中。玩家可以选择是否继续玩游戏,当玩家选择不再玩游戏时,程序会先对玩家列表进行排序,再遍历输出排行榜。
需要注意的是,代码中有若干处需要补充的部分,具体需要根据题目要求来进行填写。
相关问题
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; import java.util.Hashtable; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Set set = new LinkedHashSet(); String a; String b = sc.nextLine(); for(int i =0 ;i <n;i++){ set.add(sc.nextLine()); } System.out.println(set.size()); for(Object obj:set){ System.out.println(obj); } sc.close(); } }
这段代码实现了从标准输入中读取n个字符串,并去重后输出不重复字符串个数和每个字符串。具体实现过程如下:
1. 导入需要使用的包,包括`java.util.Scanner`、`java.util.Set`和`java.util.LinkedHashSet`。
2. 创建一个`Scanner`对象`sc`,用于从标准输入中读取数据。
3. 从标准输入中读取一个整数`n`,表示接下来要读取的字符串个数。
4. 创建一个`LinkedHashSet`对象`set`,用于存储不重复的字符串。
5. 使用`for`循环,循环读取`n`个字符串,并将其添加到`set`中。
6. 输出不重复字符串的个数,即`set`的大小。
7. 使用`for`循环遍历`set`中的每个元素,输出每个字符串。
8. 关闭`Scanner`对象。
这段代码中使用了`LinkedHashSet`来实现去重功能,与`HashSet`相比,`LinkedHashSet`能够保持元素的插入顺序,因此在输出时能够保证按照输入顺序输出。另外,由于`LinkedHashSet`继承自`HashSet`,因此也具有去重的功能。
Duplicated Numbers 分数 10 作者 翁恺 单位 浙江大学 This program reads a lot of integers, in which may be duplicated numbers. The program picks out all the duplicated ones and sorts the remainders in a descendent order. 函数接口定义: public static ArrayList<Integer> pick(ArrayList<Integer> a); a is the ArrayList to be parsed and returns the result as an ArrayList. Hint: These classes and functions may be used. Collection Collections.sort(Collection); Collection Collections.reverse(Collection) 裁判测试程序样例: import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Scanner; public class Main { /* 请在这里填写答案 */ public static void main(String[] args) { ArrayList<Integer> lst = new ArrayList<>(); Scanner in = new Scanner(System.in); while ( in.hasNextInt() ) { lst.add(in.nextInt()); } lst = pick(lst); for ( int x:lst) { System.out.print(x+" "); } System.out.println(); in.close(); } }
下面是实现题目要求的代码:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
public class Main {
public static ArrayList<Integer> pick(ArrayList<Integer> a) {
ArrayList<Integer> result = new ArrayList<Integer>();
HashSet<Integer> set = new HashSet<Integer>();
for (int i = 0; i < a.size(); i++) {
if (set.contains(a.get(i))) {
result.add(a.get(i));
} else {
set.add(a.get(i));
}
}
Collections.sort(result);
Collections.reverse(result);
return result;
}
public static void main(String[] args) {
ArrayList<Integer> lst = new ArrayList<>();
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
lst.add(in.nextInt());
}
lst = pick(lst);
for (int x : lst) {
System.out.print(x + " ");
}
System.out.println();
in.close();
}
}
```
阅读全文