頁:
[1]
這程式如何解釋
本帖最後由 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> 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> 2樓的大大的解釋已很清楚, 但第13行不能顯示花紋或樓字. 因為第七行和第十九行的Casting是會把一個整數作為ASCII去轉一個字(Char). 例如65轉成'A', 66轉成'B'. 所以第31行輸入的3或generate()得出在1至4的整數都轉成不能顯示字符. 請參考ASCII table吧. 感謝各位的解答
感恩
頁:
[1]