我正在使用字符串比较方法“compareTo”制作方法。但是,我有几个关于它是如何工作的问题。
public int compareTo(Card player2){
int finalRank = this.getRank().compareTo(player2.getRank());
int turn = this.getRank().compareTo(player2.getRank());
// Checks for "War" before anything is processed
if(this.getRank() == player2.getRank())
{
return 0; // results in war
}
//This logic sets Ace as the highest card
//after checking for "WAR"
else if(this.getRank() == Rank.ACE)
{
return 1;
}
else if(player2.getRank() == Rank.ACE)
{
return -1;
}
//If it is not an ace, the winner per turn
//is determined by standard value.
else if(turn > 0)
{
//System.out.println("playerOne wins");
return 1;
}
else
{
//System.out.println("playerTwo wins");
return -1;
}
}//end compareTo
这是 compareTo 方法中我的部分代码。**所以我可以提一下,我收到了很多关于这段代码的在线帮助。当它被解释给我时,它是有道理的。因此,如果这对我有意义,我应该能够以另一种格式重写这段代码。但是,我发现自己无法做到这一点。因此,我正在寻找建议和帮助。
功能
int turn = this.getRank().compareTo(player2.getRank());
通常是什么让我失望。compareTo 方法到底在做什么?
对于玩家回合,它正在比较两张游戏中的牌 -> 遵循程序逻辑。
我是否可以使用 compareTo 方法比较卡片?
这是我设置类构造函数的方式。
再次,最终确定。我在理解 compareTo 方法的工作原理时遇到问题。并且如果有任何类似的建议来比较玩家牌的另一种方式。
卡片列表来自 2 个单独的类别 -> 套装和等级
private Rank rCard;
private Suit sCard;
/** * ** * ** * ** * ** * ** * ** * ** * ** * 初始化类 Card 之外的对象 * @param rCard * @param sCard * * ** * ** * ** * ** * ** * ** * ** * ** * */ public Card(Rank rCard, Suit sCard) { this.rCard = rCard; 这个.sCard = sCard; }