JAVA编写程序,完成下列内容。
定义Player玩家类,包含2项内容,姓名name和得分score
在主函数中,实例化一个ArrayList用于存放玩家列表
开启一局游戏前,先输入玩家姓名,每玩一局游戏,记录该玩家的成绩,并将该玩家加入到玩家列表中。
一局结束后,询问是否再玩一局,输入Y则重新开始一局问答游戏,输入N则退出游戏。
最后对玩家的记录按得分从高到低排序并输出。
【社会主义核心价值观】 富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善。
测试说明
平台会对你编写的代码进行测试:
测试输入:
张三
民主
和谐
诚信
0
N
预期输出:
请输入玩家姓名:
----------答题系统----------
请输入社会主义核心价值观之一:
请输入社会主义核心价值观之一:
请输入社会主义核心价值观之一:
请输入社会主义核心价值观之一:
张三 得分:30
是否再玩一局?(Y/N):
玩家 [姓名:张三, 得分:30]
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();
}
}
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 方法
public String toString() {
return "玩家[姓名:"+this.getName()+",得分:"+this.getScore()+"]";
}
//补充代码:覆写compareTo方法,按照score降序排序
@Override
public int compareTo(Player o) {
// TODO Auto-generated method stub
return o.getScore()-this.score;
}
}
public class Test {
public static Scanner sc = new Scanner(System.in);
public static void playAGame(Player p) { //玩家p玩一局游戏
int score = 0;
//补充代码:玩一局游戏,规则如上一关。
// https://www.php.cn/faq/471112.html
// 答题的问题和答案
String[] answers =new String[] {"社会主义核心价值观" , "富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善"};
String ans="100" ;
System.out.println("----------答题系统----------");
// 如果输入的不是"0",则循环获取答案,这里如果需要控制答题次数,可以加个控制变量
while(!"0".equals(ans)){
System.out.print("请输入"+answers[0]+"之一:"); // 问问题
ans=sc.nextLine(); // 获取答案
//判断答案是否正确,正确则分数+10
for(int i=1;i<answers.length;i++) {
if(answers[i].equals(ans)) {
score+=10;
break;
}
}
}
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添加到玩家列表
players.add(p);
playAGame(p);
System.out.println("是否再玩一局?(Y/N):");
again = sc.nextLine();
}while("Y".equals(again) || "y".equals(again));
//补充代码:先对players进行排序,再遍历输出
// https://blog.csdn.net/Hoshizola/article/details/105321402
// 使用Collections类的sort()方法进行排序
Collections.sort(players);
// 打印排序后的结果
for( Player p : players) {
System.out.println(p);
}
sc.close();
}
}
代码思路是正确的