既然你只用数组和不使用“助手”的功能,如那些在Arrays类来实现这一要求。你能解决这样的问题:
public class ScoreBoard{
Participant[] participants = new Participant[0];
public void addParticipant(Participant participant){
System.out.println("Adding participant: " + participant);
Participant[] oldParticipants = participants;
participants = new Participant[oldParticipants.length + 1];
if(oldParticipants.length == 0){
participants[0] = participant;
return;
}
for(int i = 0; i < oldParticipants.length; i++){
if(participant.getScore() > oldParticipants[i].getScore()){
participants[i] = participant;
for(int j = i; j < oldParticipants.length; j++){
participants[j+1] = oldParticipants[j];
}
return;
}
participants[i] = oldParticipants[i];
}
participants[participants.length-1] = participant;
}
public void printScores(){
System.out.println("\nPrinting current scores...");
for(int i = 0; i < participants.length; i++){
System.out.println(participants[i]);
}
System.out.println();
}
public static void main(String... args){
System.out.println("Initializing ScoreBoard...\n");
ScoreBoard sb = new ScoreBoard();
//Add some participants with scores
sb.addParticipant(new Participant("Allen", 37));
sb.addParticipant(new Participant("Bob", 20));
sb.addParticipant(new Participant("Mark", 54));
sb.addParticipant(new Participant("Jenny", 77));
sb.addParticipant(new Participant("Sue", 32));
sb.addParticipant(new Participant("Dave", 89));
sb.addParticipant(new Participant("Jeremy", 26));
sb.addParticipant(new Participant("Jill", 76));
sb.addParticipant(new Participant("Sarah", 63));
sb.addParticipant(new Participant("Don", 92));
sb.printScores();
}
}
class Participant implements Comparable<Participant>{
String name;
int score = 0;
public Participant(String n){
this.name = n;
}
public Participant(String n, int s){
this(n);
score = s;
}
public String getName(){
return this.name;
}
public int getScore(){
return this.score;
}
public String toString(){
return name + " : " + score;
}
public int compareTo(Participant other){
return -this.score.compareTo(other.score);
}
}
如果您并不局限于使用数组并且可以使用任何数据结构,试试这个:
public class ScoreBoard{
TreeSet<Participant> participants = new TreeSet<>();
public void addParticipant(Participant participant){
participants.add(participant);
}
public void printScores(){
System.out.println("Printing current scores...");
for(Participant p: participants){
System.out.println(p);
}
}
public static void main(String... args){
System.out.println("Initializing ScoreBoard...");
ScoreBoard sb = new ScoreBoard();
//Add some participants with scores
sb.addParticipant(new Participant("Allen", 37));
sb.addParticipant(new Participant("Bob", 20));
sb.addParticipant(new Participant("Mark", 54));
sb.addParticipant(new Participant("Jenny", 77));
sb.addParticipant(new Participant("Sue", 32));
sb.addParticipant(new Participant("Dave", 89));
sb.addParticipant(new Participant("Jeremy", 26));
sb.addParticipant(new Participant("Jill", 77));
sb.addParticipant(new Participant("Sarah", 63));
sb.addParticipant(new Participant("Don", 92));
sb.printScores();
}
}
public class Participant implements Comparable<Participant>{
String name;
int score = 0;
public Participant(String n){
this.name = n;
}
public Participant(String n, int s){
this(n);
score = s;
}
public String getName(){
return this.name;
}
public int getScore(){
return this.score;
}
public String toString(){
return name + " : " + score;
}
public int compareTo(Participant other){
return -this.score.compareTo(other.score);
}
}
什么是你的问题? – brso05
对不起,我正在使用Java,我的问题基本上是如何做到我提到的有关循环的最后一部分。我一般都是新手,所以我很困惑。对不起,再次缺少信息 – Jose