2016-04-10 10 views
-1

メソッドからの2つの戻り値を比較するにはどうすればよいですか?私のコードでこれをやっているときに戻り値が同じであると期待しているので、違うものとして比較しています。ここに私のコードは次のとおりです。2つの戻り値を比較します

public static void Card_Initialization(){ 

    Red_Dog c1 = new Red_Dog(); 
    Red_Dog c2 = new Red_Dog(); 
    Cards_Match(c1); 
    System.out.println(card_num+card_suit); 
    Cards_Match(c2); 
    System.out.println(card_num+card_suit); 
    System.out.println(Cards_Match(c1) == Cards_Match(c2));//to check really if it is equal 
} 

public static int Cards_Match(Red_Dog rd){ 
    card = (int)(Math.random() * deck.length); 
    if(card >= 0 && card <=3) 
    { 
     card_num = cards[0]; 
    } 
    else if(card >= 4 && card <=7) 
    { 
     card_num = cards[1]; 
    } 
    else if(card >= 8 && card <=11) 
    { 
     card_num = cards[2]; 
    } 
    else if(card >= 12 && card <=15) 
    { 
     card_num = cards[3]; 
    } 
    else if(card >= 16 && card <=19) 
    { 
     card_num = cards[4]; 
    } 
    else if(card >= 20 && card <=23) 
    { 
     card_num = cards[5]; 
    } 
    else if(card >= 24 && card <=27) 
    { 
     card_num = cards[6]; 
    } 
    else if(card >= 28 && card <=31) 
    { 
     card_num = cards[7]; 
    } 
    else if(card >= 32 && card <=35) 
    { 
     card_num = cards[8]; 
    } 
    else if(card >= 36 && card <=39) 
    { 
     card_num = cards[9]; 
    } 
    else if(card >= 40 && card <=43) 
    { 
     card_num = cards[10]; 
    } 
    else if(card >= 44 && card <=47) 
    { 
     card_num = cards[11]; 
    } 
    else if(card >= 48 && card <=51) 
    { 
     card_num = cards[12]; 
    } 

    if(card % 4 == 0) 
    { 
     card_suit = suits[0]; 
    } 

    else if(card % 4 == 1) 
    { 
     card_suit = suits[1]; 
    } 

    else if(card % 4 == 2) 
    { 
     card_suit = suits[2]; 
    } 

    else if(card % 4 == 3) 
    { 
     card_suit = suits[3]; 
    } 

    return card; 
} 

結果:第1回実行:

AceSpadesのAceSpades偽

第二の実行:

AceSpadesのAceSpades真

+0

笑私はしばらく前に私は再び掲示理由です編集する方法を知りません。笑。面白い。 –

+0

「編集」をクリックしてください。リンクは、質問の下にある「java」と「oop」というタグの下にあります。 – RubioRic

+0

私は元の質問に答えました。どうぞご覧ください。 – RubioRic

答えて

2

RedDodオブジェクトを渡して無視する代わりに、メソッドを非静的にし、そのクラスのフィールドのみを設定することをお勧めします。

import java.util.Random; 

public class RedDog implements Comparable<RedDog> { 
    private final Suit suit; 
    private final Face face; 

    enum Suit { 
     CLUB, SPADES, DIAMONDS, HEARTS 
    } 
    static final Suit[] SUITS = Suit.values(); 

    enum Face { 
     ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING 
    } 
    static final Face[] FACES = Face.values(); 

    static final Random RAND = new Random(); 

    public RedDog(Suit suit, Face face) { 
     this.suit = suit; 
     this.face = face; 
    } 

    public static RedDog random() { 
     return new RedDog(SUITS[RAND.nextInt(SUITS.length)], 
          FACES[RAND.nextInt(FACES.length)]); 
    } 

    public static void main(String[] args) { 
     RedDog c1 = RedDog.random(); 
     RedDog c2 = RedDog.random(); 
     System.out.println(c1 + " and " + c2 + " equals is " + c1.equals(c2)); 
    } 

    @Override 
    public boolean equals(Object o) { // generated by my IDE 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     RedDog redDog = (RedDog) o; 

     if (suit != redDog.suit) return false; 
     return face == redDog.face; 

    } 

    @Override 
    public int hashCode() { // generated by my IDE 
     int result = suit != null ? suit.hashCode() : 0; 
     result = 31 * result + (face != null ? face.hashCode() : 0); 
     return result; 
    } 

    @Override 
    public String toString() { // generated by my IDE 
     return "RedDog{" + 
       "face=" + face + 
       ", suit=" + suit + 
       '}'; 
    } 

    @Override 
    public int compareTo(RedDog r) { 
     int cmp = suit.compareTo(r.suit); 
     if (cmp == 0) 
      cmp = rank.compareTo(r.rank); 
     return cmp; 
    } 
} 

プリント

RedDog{face=KING, suit=SPADES} and RedDog{face=QUEEN, suit=DIAMONDS} equals is false 
+0

ありがとう、ピーター! :)私は今でもそれをしようとしているが、まだ、ありがとう! :) –

+0

@JonathanNelsonCastilloあなたが本当にOOP(とあなたのIDEがあなたのためにequals/toStringを生成するために)を使用したいと思うことを願っています。 –

+0

ちょっとちょっとした質問です。どのようにしてc1とc2の値を比較できますか?たとえば、c1はKING SPADES、c2はQUEEN HEARTSですが、どちらが高いかを計算する構文を比較するにはどうすればよいですか?ありがとうございました! :) –

関連する問題