java新手编程题目

编写一个程序来模拟同时滚动四个骰子。继续滚动这四个骰子,直到它们中的两个具有相同的值(在骰子的顶部)以及另外两个同样拥有相同的值-请注意这两个值可以相同或不同-而这两个值... 编写一个程序来模拟同时滚动四个骰子。 继续滚动这四个骰子,直到它们中的两个具有相同的值(在骰子的顶部)以及另外两个同样拥有相同的值 - 请注意这两个值可以相同或不同 - 而这两个值的总和 是6。最后显示这两个值,和滚动多少次骰子来获得这个值。 重复此过程五次。 展开
 我来答
雪飞潇潇
2018-03-11 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:830万
展开全部

思路如下:

  • 随即4个数字(1~6) 用来模拟4个色子

  • 数字全部存入数组ary,.然后升序排列. 

  • 如果满足两两相等,那么已经排序好的数字,就是ary[0]=ary[1]; ary[2]=ary[3];

  • 然后判断ary[0]+ary[2]==6 .如果等于6 那么满足要求,不等于6 ,那么继续下次循环

参考代码

import java.util.Arrays;

public class RandomDemo {
public static void main(String[] args) {
int loop = 5;// 重复5次试验

for (int k = 0; k < loop; k++) {
int times = 0;// 循环的次数
int[] ary;// 数组,存储4个随机数
while (true) {
times++;// 次数+1
ary = new int[4];
for (int i = 0; i < ary.length; i++) {
ary[i] = getNum();// 添加随机数
}
Arrays.sort(ary);// 用数组工具类进行排序
// 因为有两两相等的情况, 那么就是 ary[0]=ary[1] ary[2]=ary[3] 能减少很多的if else判断
// 如果两两相等.且两值和等于6 ,那么跳出循环
if (ary[0] == ary[1] && ary[2] == ary[3] && ary[0] + ary[2] == 6) {
break;//跳出
}

}
System.out.println("两个数字分别是" + ary[0] + "和" + ary[2] + "\t" + "循环了" + times + "次");
}
}

//该方法用于返回一个 [1,6]之间的数字
private static int getNum() {
return (int) (Math.random() * 6) + 1;// 1~6之间的随即数
}
}

测试结果

两个数字分别是1和5	循环了22次
两个数字分别是1和5 循环了12次
两个数字分别是3和3 循环了105次
两个数字分别是1和5 循环了128次
两个数字分别是2和4 循环了96次
J001先生
2018-03-11 · TA获得超过142个赞
知道小有建树答主
回答量:96
采纳率:83%
帮助的人:73.5万
展开全部
import java.util.Random;

public class Test {

public static void main(String[] args) {
// 重复5次
int count = 0;
// 定义4个筛子
Random a = new Random();
Random b = new Random();
Random c = new Random();
Random d = new Random();
int randomCount = 0;
while (count < 5) {
// nextInt(6)产生随机数为[0, 6),包含0,但不包含6,所以+1
int aVal = (a.nextInt(6) + 1);
int bVal = (a.nextInt(6) + 1);
int cVal = (a.nextInt(6) + 1);
int dVal = (a.nextInt(6) + 1);
// (a, b), (a, c), (a, d)一共就这三种情况,假入(b, c)一组,对应(a, d)就一组,就和前面重复了
// 两个小组,每组两个相等,且组间相加等于6
randomCount++;
if (((aVal ==bVal) || (cVal ==dVal)) && (aVal + cVal == 6)) {
System.out.println(aVal + " " + cVal);
count++;
}
if (((aVal ==cVal) || (bVal ==dVal)) && (aVal + bVal== 6)) {
System.out.println(aVal + " " + bVal);
count++;
}
if (((aVal ==dVal) || (bVal ==cVal)) && (aVal + bVal== 6)) {
System.out.println(aVal + " " + bVal);
count++;
}
}
System.out.println("一共掷骰子了" + randomCount + "次");

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式