2016-02-11 61 views
-2

大家好,这是我第一次在这个网站上写了一个问题,虽然我总是来这里寻求关于我的编程任务的帮助。所以请原谅我的错误或混淆。定位索引,替换数值并将需要的索引向下移动

对于这个任务它的一个“记分牌”主题之一。我们在给值的地方,我们必须把这些值按照从最大到最小的顺序排列成一个数组,尽管还要确保当一个新分数被添加到记分板时,如果分数高于索引中的一个分数[1 ]新的分数进入索引[1],并将其他事物向下移动一个。

name.addscore(43) 
name.addscore(30) 
name.addscore(35) 
name.addscore(50) 
name.addscore(31) 

以上是用户随机输入分数的例子,而不是按顺序。

所以我正在写一个方法来将数据添加到数组中。我需要使用2个循环。第一个循环应该找到并存储新数字应该去的索引。第二个循环应该移动需要移位的数字。然后,您可以将新分数存储在适当的位置。

如何在Java中执行上述代码?

+0

什么是你的问题? – brso05

+0

对不起,我正在使用Java,我的问题基本上是如何做到我提到的有关循环的最后一部分。我一般都是新手,所以我很困惑。对不起,再次缺少信息 – Jose

回答

1

既然你只用数组和不使用“助手”的功能,如那些在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); 
    } 
} 
+0

我被绑定到数组 – Jose

+0

我已经更新了答案,只使用简单的数组。 – pczeus