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