2017-05-07 40 views
0

需要幫助,我的代碼這部分.. ..我正在寫一個hang子手遊戲的代碼..後有人贏了,我計算他們的分數..我根據他們的分數排序並打印它..但我不想用不同的分數表示同名。我的意思是如果同一個人再次出場並獲勝,並且如果該人的得分高於以前,我不想添加任何新名字並替換該人的得分。 我使用ArrayList保存名稱和分數..任何人獲勝後,我添加名稱,然後將分數添加到ArrayList ..但是當我想替換相同名稱的分數時,我似乎有一個問題.. 而且我知道我的代碼有點笨這種方式..只是想知道問題..刪除具有不同分數的相同名稱?並用封裝重做整個事情?

  // here I add the name and the score to the end of my rankings ArrayList.. 
      rankings.add(name); 
      rankings.add(finalScore); 
      if (rankings.size() > 2) { 
       for (int i = 0; i < rankings.size() - 2; i++) { 
        if (rankings.get(i).equals(rankings.get(rankings.size() - 2))) { 
         if (rankings.get(i + 1).compareTo(rankings.get(rankings.size() - 1)) == -1) { 
          rankings.set(i + 1, rankings.get(rankings.size() - 1)); 
          rankings.remove(rankings.size() - 1); 
          rankings.remove(rankings.size() - 2); 
          break; 
         } 
        } 
       } 
      } 

也..你可以幫我重做整個事情的另一種方式..我的意思,而不是分別添加名稱和分數,每次分開..我想做一個ArrayList的對象,每個對象包含名稱和分數。 。好歹我可以檢查重複的名稱..然後對其進行排序..謝謝你..和亂碼抱歉..

回答

0

我想你應該在一個單獨的類封裝namescore,如Player。這將幫助你通過名字來跟蹤球員和得分或可添加到Player類中的任何其他領域對它們進行比較:

public class Player { 
    private String name; 
    private int score; 

    public Player(String name, int score) { 
     this.name = name; 
     this.score = score; 
    } 

    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; 
    } 
} 

應該比你有List<Player> players = new ArrayList<>();操作,使用數據填充列表,並檢索&修改其值,你需要。

相關問題