文字列比較メソッド「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 メソッドは正確に何をしているのですか?
プレーヤーのターンでは、プレイ中の 2 枚のカードを比較します -> プログラムのロジックに従います。
compareTo メソッドを使用せずにカードを比較することはできますか?
クラスコンストラクターをセットアップする方法は次のとおりです。
もう一度、ファイナライズします。compareTo メソッドの仕組みを理解するのに問題があります。そして、プレイ中のプレイヤーカードを比較する別の方法の提案があれば.
カードリストは2つの別々のクラスから来ています - >スーツとランク
private Rank rCard;
private Suit sCard;
/** * ** * ** * ** * ** * ** * ** * ** * ** * Card クラス外のオブジェクトの初期化 * @param rCard * @param sCard * * ** * ** * ** * ** * ** * ** * ** * ** * */ public Card(Rank rCard, Suit sCard) { this.rCard = rCard; this.sCard = sCard; }