2016-04-09 172 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