2012-01-10 88 views
-2

c1和c2來自我的卡對象,並且p。東西來自我的玩家類。我正試圖交換牌,以便牌從最小到最大。牌被處理,他們只是不正確。如果你需要我參加我的球員課程和卡班,我將非常樂意。任何幫助,將不勝感激。我需要幫助排列撲克牌

public static void SortCards(Player p) 
{ 
    Card c1 = null; 
    Card c2 = null; 

    int a = 0; 
    int b = 0; 
    int c = 0; 
    int temp = 0; 

    int card1 = 0; 
    int card2 = 0; 

    String p1; 
    // pull out player 
    // get card 
    // set at positions 

    // loop goes to the size of the hand 
    for (a = 0; a < p.handSize(); a++) 
    { 
     c = a; 
     b = a + 1; 

     for (b = 0; b < p.handSize(); b++) 
     { 
      c1 = p.Hand.get(b); 
      c2 = p.Hand.get(c); 

      card1 = c1.getValue(); 
      card2 = c2.getValue(); 


       if (card1 < card2) 
       { 
        c = b; 
       } 
      b = b + 1; 
     } 
     p.Hand.setElementAt(c2, card1); 
     p.Hand.setElementAt(c1, card2); 
    } 
} 
+9

考慮實現可比性(或寫一個比較器),只是使用排序。 – 2012-01-10 21:42:58

回答

0

我同意別人,你不應該重新實現自己的排序功能。反正也許你想要。 (也許這是爲了學校,而你的老師希望你。)在這種情況下,你在這裏編寫的代碼有很多問題,所以指出一個快速的校正並不容易,到一個可行的解決方案,但這裏有一個開始的地方:在所有的地方尋找片刻「b」被修改。在外層循環中,將其設置爲c + 1,但是立即在內層循環中將其重置爲0.內層循環在每次迭代時增加它,但是您還有一個單獨的「b = b + 1」語句,每次增加兩次。

你應該對每個變量的目的有個很好的概念。如果可能的話,你應該根據這個目的命名你的變量,這樣你的代碼就可以理解你和其他人。當變量名稱都是單個字母時,很容易混淆。

祝你好運!

0

也同意你不應該重新實現你自己的排序功能。如果仍想這樣做,請查看「冒泡排序」算法。這是一個簡單的排序算法。我修改了你的代碼,以便它使用冒泡排序算法。但是我沒有測試它,也不要成爲一個java的程序員,所以可以將它不工作,但我想它做:)

public static void SortCards(Player p) { 
    Card c1 = null; 
    Card c2 = null; 
    boolean unsorted=true; 

    while (unsorted){ 
    unsorted = false; 
    for (int i=0; i < p.handSize() - 1; i++) 
     c1 = p.Hand.get(i); 
     c2 = p.Hand.get(i+1); 

     if (c1.getValue() < c2.getValue()) {      
      p.Hand.setElementAt(c2, i); 
      p.Hand.setElementAt(c1, i+1); 
      unsorted = true; 
     }   
    } 
}