下面是一个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如何去表示花色 展开
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如何去表示花色 展开
展开全部
这个程序我觉得有问题: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 ");
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 ");
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单啊 , 随机数 % 13 的 余数 如果 在 0-12 就 说明是 普通的牌, 10 的话 就是 jack,11 queen ,12 就是 King
/13 的 值 就是 13 的倍数,如果是 0 就是 一倍 可以用 黑桃 表示 ,1 的话就是 梅花 之类的
/13 的 值 就是 13 的倍数,如果是 0 就是 一倍 可以用 黑桃 表示 ,1 的话就是 梅花 之类的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题在于取随机数时候,取到了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 ");
好像更直观一些
而将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 ");
好像更直观一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询