查看完整版本: 這程式如何解釋
頁: [1]

linth123 發表於 2009-11-8 11:55 PM

這程式如何解釋

本帖最後由 19821206 於 2009-11-14 09:19 AM 編輯

class PokeCard
{
     char f;
     int p;
     
     void set(int it, int ip)
     {
         f=(char)it;
         p=ip;
     }
     
     void show()
     {
         System.out.print(f);
         System.out.println(p);
     }
     
     void generate()
     {
         f=(char)((int)(Math.random()*4)+3);
         p=(int)(Math.random()*13)+1;
     }
}

class PokeTest
{
     public static void main(String[] args)
     {
         PokeCard a = new PokeCard();
         a.set(3, 10);
         a.show();
         a.generate();
         a.show();
     }
}我知道是作花色跟點數.亂數出牌
但不知道要怎解釋這程式阿

發文未使用code包住,代為編輯 by 19821206...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

HPkon 發表於 2009-11-9 04:07 AM

class PokeCard
{
char f; // 放牌上的花紋
int p; // 放牌上的數字
void set(int it, int ip)
{
f=(char)it; // it 是整數,所以(char)it就是把it內的整數轉換成字元,也就是把傳入的3轉成愛心
p=ip; // 這邊傳入的是10
}

void show()
{
System.out.print(f); // 顯示花紋
System.out.println(p); // 顯示牌上的數字
}

void generate()
{
f=(char)((int)(Math.random()*4)+3); // 這邊是取花紋,說明同下。
p=(int)(Math.random()*13)+1; // Math.random()取的是0~1之間的小數,但不包含1,所以*13就會是取0~13之間的小數,
                                                 // 但不包含13,所以+1就是取1~14之間的數,但不包含14,(int)是因為有小數必須捨棄小數,
                                                 // 所以轉型為整數就行了,這樣這行就是取撲克牌上1~13之間的數了
}
}

class PokeTest
{
public static void main(String[] args)
{
PokeCard a = new PokeCard();
a.set(3, 10); // 設定撲克牌為愛心10
a.show(); // 把設定的愛心10顯示出來
a.generate(); // 隨機選一張牌
a.show(); // 把隨機選到的顯示出來
}
}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

aDummy 發表於 2009-11-11 11:50 AM

2樓的大大的解釋已很清楚, 但第13行不能顯示花紋或樓字. 因為第七行和第十九行的Casting是會把一個整數作為ASCII去轉一個字(Char). 例如65轉成'A', 66轉成'B'. 所以第31行輸入的3或generate()得出在1至4的整數都轉成不能顯示字符. 請參考ASCII table吧.

linth123 發表於 2009-11-14 09:39 AM

感謝各位的解答
感恩
頁: [1]