我需要帮助为扑克排序牌

时间:2012-01-10 21:41:32

标签: java

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

3 个答案:

答案 0 :(得分:1)

在Card类中实现Comparable并使用List和Collections.sort()。

http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

答案 1 :(得分:0)

我同意其他人的意见,你不应该重新实现自己的排序功能。不管怎样,也许你想要。 (也许这是为了学校,你的老师想要你。)在这种情况下,你在这里写的代码有很多问题,所以不容易指出一个快速修正,这将使你从这里一个有效的解决方案,但这里有一个开始的地方:在所有地方寻找片刻“b”被修改。在外部循环中,将其设置为c + 1,但随后立即将其在内部循环中重置为0.内部循环在每次迭代时递增它,但是您还有一个单独的“b = b + 1”语句,因此它会得到每次都加倍。

您应该非常了解每个变量的用途。如果可能,您应该根据该目的命名变量,以便您和其他人可以理解您的代码。当你的变量名都是单个字母时,很容易混淆。

祝你好运!

答案 2 :(得分: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;
        }          
  } 
}