2016-04-09 163 views
0

我正在做一個簡單的活動,它將首先生成2個隨機卡片。現在我已經有了一個card1的方法,但是我想將這個方法複製到card2而不復制它。有沒有一種方法可以重用某種方法? 這是方法:將方法傳遞給變量

  public static void Cards_Match(){ 
       if(c1 >= 0 && c1 <=3) 
        { 
         card_rank = cards[0]; 

        } 
       else if(c1 >= 4 && c1 <=7) 
        { 
         card_rank = cards[1]; 
        } 
       else if(c1 >= 8 && c1 <=11) 
        { 
         card_rank = cards[2]; 
        } 
       else if(c1 >= 12 && c1 <=15) 
        { 
         card_rank = cards[3]; 
        } 
       else if(c1 >= 16 && c1 <=19) 
        { 
         card_rank = cards[4]; 
        } 
       else if(c1 >= 20 && c1 <=23) 
        { 
         card_rank = cards[5]; 
        } 
       else if(c1 >= 24 && c1 <=27) 
        { 
         card_rank = cards[6]; 
        } 
       else if(c1 >= 28 && c1 <=31) 
        { 
         card_rank = cards[7]; 
        } 
       else if(c1 >= 32 && c1 <=35) 
        { 
         card_rank = cards[8]; 
        } 
       else if(c1 >= 36 && c1 <=39) 
        { 
         card_rank = cards[9]; 
        } 
       else if(c1 >= 40 && c1 <=43) 
        { 
         card_rank = cards[10]; 
        } 
       else if(c1 >= 44 && c1 <=47) 
        { 
         card_rank = cards[11]; 
        } 
       else if(c1 >= 48 && c1 <=51) 
        { 
         card_rank = cards[12]; 
        } 

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

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

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

       else if(c1 % 4 == 3) 
        { 
         card_suit = suits[3]; 
        } 
      System.out.println("Your 1st card is: " +card_rank +" of " +card_suit); 
      System.out.println("Your 2nd card is: " +card_rank +" of " +card_suit); 
+0

不要硬編碼你的變量,並避免使用'全局變量',你不會遇到這個問題。 – Natecat

+0

是的我使用全局變量,但我不硬編碼我的變量。 :) –

回答

1

我假設C1,C2爲您隨機生成的卡。

爲了使該方法可重複使用的,您需要爲您的參數

防爆內識別變量。因此,爲了實質上「複製」該方法,您需要調用一個對象或變量(假設您的隨機卡來自對象「RandomCard」),並將該對象或變量到您的paramemters

public static void Cards_Match(RandomCard card){...} 

然後,在你已經把C1,替換參數版本「卡」

這使得該方法的可重用性。這樣你可以無限制地重用這個方法。

如果您還有其他問題,可以去問問!

+0

我在網上看到了某人的代碼,所以我的問題是你如何比較這個for循環中卡片中的更大或更高: for(int i = 0; i <2; i ++){ \t \t \t String suit = suits [deck [i]/13]; \t \t \t String rank = ranks [deck [i]%13]; (「你有+ +服裝的」+等級+「); \t \t \t \t \t \t} \t \t} –

+0

那麼這裏是一個方法的第二部分,返回一個變量。根據你給出特定卡牌的等級,你可以返回一個變量(假設你用一個int對它進行排名)。因此,就卡片排名而言,無論您想在King是12還是Ace是0的情況下設置它,您都可以通過該方法返回該變量。例如, public static int Cards_Match(RandomCard card){ ... return rankofcard; } 所以,你現在可以做的是將方法的值存儲在一個整數中,並用另一張隨機卡做這個。 現在你有兩個整數,你可以很容易地從那裏進行比較。 – Asymons