私はJavaのカードクラスで作業していますが、特定のメソッドの実装についてはわかりません。私はcompareToメソッドを使ってカードのリストの中で最高の値のカードを見つけて返す静的メソッド(maxと呼ぶ)を含める必要があります。しかし、リストをトラバースするためにイテレータを使用する必要があります。イテレータ(Java)を使用してリスト内の最高値を返す方法
以下は私が実装したcompareToメソッドです。カードを降順にソートし、最初にスーツでランク付けします。
public int compareTo(Card card) {
if (this.rank.compareTo(card.rank) > 0){
return 1;
} else if (this.rank.compareTo(card.rank) < 0){
return -1;
} else {
if(this.suit.compareTo(card.suit) > 0){
return 1;
} else if (this.suit.compareTo(card.suit) < 0){
return -1;
} else {
return 0;
}
}
私は、スーツとランクの2つの列挙型も含めています。
enum Rank{TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8),
NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11);
private int value;
Rank(int i){
value=i;
}
public int getValue(){
return value;
}
public Rank getPrevious(){
return values()[ordinal() > 0 ? ordinal() - 1 : 0];
}
}
enum Suit{CLUBS, DIAMONDS, HEARTS, SPADES;
public static Suit randomSuit(){
Random random = new Random();
return values()[random.nextInt(values().length)];
}
}
私は物事が混乱し得ることはありませんが、それは、変数、単一のコンストラクタを持つタイプのランクとスーツのランクとスーツを含ませ、クラス全体を含める必要はありません。ランクとスーツのアクセサメソッドとtoString()メソッド
私は答えに続いて大まかな方法をとった。
Iterator<E> it = collection.iterator;
E max = null;
while(it.hasNext()) {
if(max == null) {
max = it.next();
} else {
e = it.next();
if(e.compareTo(max) > 0) {
max = e;
}
}
}
最大値を保持しますあなたの ' max() 'メソッドは次のようになります。 –
謝罪、私はそれを非常に明確にしなかったことを実感します。 max()メソッドが問題ですが、メソッドを実装する方法がわからないため、まだメソッドがありません。私はそれがリストをソートするためにcompareToメソッドを使用し、最大の(これは最初の)値を返しますが、反復子の部分は私をスローしたと仮定します。乾杯 –