下面是一个Java程序的代码,不过看了半天没有理解,求大神给我解释一下: 题目写在下面!

编写程序,模拟从一副52张耳朵牌中选择一张牌.程序应该显示牌的大小(Ace.2.3.4.5.6.7.8.9.10.Jack.Queen.King)以及牌的花色(Clubs... 编写程序,模拟从一副52张耳朵牌中选择一张牌.程序应该显示牌的大小(Ace.2.3.4.5.6.7.8.9.10.Jack.Queen.King)以及牌的花色(Clubs(黑桃花)。Diamond(红方块)。Hearth(红心)。Spades(黑桃))。下面是这个程序的运行结果示例:
The card you picked is Jack of Hearts
public class Exercise3-24{
public static void main(String[] args) {
final int NUMBER_OF_CARDS = 52;

// Pick a card
int number = (int)(Math.random() * NUMBER_OF_CARDS);

System.out.print("The card you picked is ");
if (number % 13 == 0)
System.out.print("Ace of ");
else if (number % 13 == 10)
System.out.print("Jack of ");
else if (number % 13 == 11)
System.out.print("Queen of ");
else if (number % 13 == 12)
System.out.print("King of ");
else
System.out.print((number % 13) + " of ");

if (number / 13 == 0)
System.out.println("Clubs");
else if (number / 13 == 1)
System.out.println("Diamonds");
else if (number / 13 == 2)
System.out.println("Hearts");
else if (number / 13 == 3)
System.out.println("Spades");
}
}
取到2,3,4,5,6,7,8,9,10不需要重新定义吗?Jack=10说明顺序已经打乱,Ace=0, 2,3,4,5,6,7,8,9,10对应的数字应该是1,2,3,4,5,6,7,8,9,我觉得有必要重新定义过,但是上述的代码中没有对取到2,3,4,5,6,7,8,9,10的情况给出代码,再者number/13==0=》number ==0,number==0是Ace啊,一张牌就有4钟花色啊,这个后面的代码我就完全不懂了。number/13如何去表示花色
展开
 我来答
永恒97
2014-07-30
知道答主
回答量:4
采纳率:100%
帮助的人:5711
展开全部
这个程序我觉得有问题:number % 13 = 1怎么办,以及牌10取不到;
number的范围是0到52(52取不到,0可以取到),所以number/13只可能出现0,1,2,3这4种情况,分别对应4种花色;
我觉得上面的代码需要改一下,就是System.out.print((number % 13) + " of ");改成
System.out.print((number % 1 + 1 )+ " of ");
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiqianlq
2014-07-29 · TA获得超过115个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:272万
展开全部
很简单啊 , 随机数 % 13 的 余数 如果 在 0-12 就 说明是 普通的牌, 10 的话 就是 jack,11 queen ,12 就是 King

/13 的 值 就是 13 的倍数,如果是 0 就是 一倍 可以用 黑桃 表示 ,1 的话就是 梅花 之类的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虹兰明B
2020-04-17
知道答主
回答量:1
采纳率:0%
帮助的人:610
展开全部
问题在于取随机数时候,取到了0~51
而将int number = (int)(Math.random() * NUMBER_OF_CARDS);
改为int number =1+ (int)(Math.random() * NUMBER_OF_CARDS);
就可以取到1~52了
中间部分我改成这个
int number = 1+(int)(Math.random() * NUMBER_OF_CARDS);
System.out.println(number);
System.out.print("The card you picked is ");

if (number % 13 == 1)
System.out.print("Ace of ");
else if (number % 13 == 11)
System.out.print("Jack of ");
else if (number % 13 == 12)
System.out.print("Queen of ");
else if (number % 13 == 0)
System.out.print("King of ");
else
System.out.print((number % 13) + " of ");
好像更直观一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式