java新手编程题目

编写一个程序来模拟同时滚动四个骰子。 继续滚动这四个骰子,直到它们中的两个具有相同的值(在骰子的顶部)以及另外两个同样拥有相同的值 - 请注意这两个值可以相同或不同 - 而这两个值的总和 是6。最后显示这两个值,和滚动多少次骰子来获得这个值。 重复此过程五次。

思路如下:

    随即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次

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-11
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 + "次");

}

}

相似回答