2012-01-10 77 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; 
     }   
    } 
}