我正在创建一个程序,该程序生成一系列数字并将其值存储到双精度数组中。基本上它是一个计算器,将随机输出4个骰子的滚动,使用布尔测试条件来检查所有四个骰子值是否相同。然后会出现一条胜利信息。
有人可以协助我为此编写代码吗?我是Java的新手:)是的,它是关于Java的。
字符串的方法也是具体的,所以我不需要担心它。
private int[] sequence = { 1, 1, 1, 1 }; // this is just an example
...
public boolean areTheseDiceEqual()
{
// No idea how to go about this
}
任何帮助将不胜感激!
答案 0 :(得分:3)
尝试遍历数组:
double previous = sequence[0];
for(int i =1; i < sequence.length; i++){
if(sequence[i] != previous)
return false;
previous = sequence[i];
}
return true;
如果需要,这应该适用于超过4个元素的数组。
答案 1 :(得分:3)
您可以存储位于数组第一个位置的变量,并且只要后面位置中的任何值不具有相同的值,就会返回false。
public boolean areTheseDiceEqual() {
double firstDie = -1;
for(oneDie : sequence) {
firstDie = (firstDie == -1 ? oneDie : firstDie);
if(firstDie != oneDie) {
return false;
}
}
return true;
}
答案 2 :(得分:0)
public boolean areTheseDiceEqual(double[] s) {
return (s[1] == s[2] && s[2] == s[3] && s[3] == s[4])
}
我认为没有更优雅的方式。
答案 3 :(得分:0)
我们不需要查看之前的骰子,因为第一个差异足以返回false,所以你可以像这样写:
private boolean areTheseDiceEqual(){
int firstShot=shots[0];
for (int i = 1; i < shots.length; i++) {
if(firstShot!=shots[i]){
return false;
}
}
return true;
}
使用4个jUnit测试进行测试,它只是起作用:)
@Test
public void test1(){
shots(1,2,3,4);
assertFalse(areTheseDiceEqual());
}
@Test
public void test2(){
shots(1,1,1,1);
assertTrue(areTheseDiceEqual());
}
@Test
public void test3(){
shots(1,1,1,4);
assertFalse(areTheseDiceEqual());
}
@Test
public void test4(){
shots(1,2,2,2);
assertFalse(areTheseDiceEqual());
}
public void shots(int... shots){
this.shots=shots;
}
答案 4 :(得分:-1)
发布伪代码答案只是一个算法,根据需要修改和测试:
public boolean haveDuplicates(double[] dices1, double[] dices2)
{
boolean has_duplicates = false;
for (int i=0; i<dices1.length; i++)
{
double dice1 = dices1[i];
for (int j=0; j<dices2.length; j++)
{
double dice2 = dices2[j];
if ( dice1 == dice2 )
{
has_duplicates = true;
break; // stop checking any more
}
}
if (has_duplicates) break; // stop checking any more
}
return has_duplicates;
}
这个答案假设(不清楚标题和问题)您有两个不同的骰子序列,并且您想检查它们是否包含重复值
如果使用其他结构或者按升序排序值,可以更有效地执行此操作,尝试查找有关这些其他方法的信息