JAVA,出现报错,请问该如何修改?
代码如下,出现报错,请问是什么问题?该如何修改?请给出详细解答
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;
}
public String toString() {
return "玩家[姓名:"+this.getName()+",得分:"+this.getScore()+"]";}
@Override
public int compareTo(Player o) {
return o.getScore()-this.score;
}
}
public class Test {
public static Scanner sc = new Scanner(System.in);
public static void playAGame(Player p) {
int score = 0;
String[] answers =new String[] {"社会主义核心价值观" , "富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善"};
String ans="100" ;
System.out.println("----------答题系统----------");
while(!"0".equals(ans)){
System.out.println("请输入"+answers[0]+"之一:");
ans=sc.nextLine();
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);
players.add(p);
playAGame(p);
System.out.println(name + " 得分" + score);
System.out.println("是否再玩一局?(Y/N):");
again = sc.nextLine();
}while("Y".equals(again) || "y".equals(again));
Collections.sort(players);
for( Player p : players) {
System.out.println(p);
}
sc.close();
}
}
第63行的变量 score 前面没有定义,所以报错了,将
System.out.println(name + " 得分" + score);
换成
System.out.println(name + " 得分" + p.getScore());
把第63行去掉,然后在运行程序后,根据程序提示,输入姓名,然后答题,输入0可以退出答题,然后输入N退出,最后会显示结果。
修改如下:
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;
}
public String toString() {
return "玩家[姓名:"+this.getName()+",得分:"+this.getScore()+"]";}
@Override
public int compareTo(Player o) {
return o.getScore()-this.score;
}
}
public class Test {
public static Scanner sc = new Scanner(System.in);
public static void playAGame(Player p) {
int score = 0;
String[] answers =new String[] {"社会主义核心价值观" , "富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善"};
String ans="100" ;
System.out.println("----------答题系统----------");
while(!"0".equals(ans)){
System.out.println("请输入"+answers[0]+"之一:");
ans=sc.nextLine();
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);
players.add(p);
playAGame(p);
// System.out.println(name + " 得分" + score); // 去掉这一样
System.out.println("是否再玩一局?(Y/N):");
again = sc.nextLine();
}while("Y".equals(again) || "y".equals(again));
Collections.sort(players);
for( Player p : players) {
System.out.println(p);
}
sc.close();
}
}
总之,程序员想要尽可能少地遭遇瓶颈,就要经常看看自己要往哪里走,同时也回头看看自己走了多远。
关于往哪儿走,可以看看Git Hub上的热门项目,看看技术类的新闻,在工作之余也试着做一些其它自己感兴趣的事情。利用自身碎片时间,学习与业务紧密相关的实战知识,学习一些最新的互联网技术!
以上是我对于程序员瓶颈期的一些认识和建议,希望对有这方面困扰的程序员们有所帮助。