检查数组是否具有相等的值

时间:2015-04-12 14:14:42

标签: java

我正在创建一个程序,该程序生成一系列数字并将其值存储到双精度数组中。基本上它是一个计算器,将随机输出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
}

任何帮助将不胜感激!

5 个答案:

答案 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;
}

这个答案假设(不清楚标题和问题)您有两个不同的骰子序列,并且您想检查它们是否包含重复值

如果使用其他结构或者按升序排序值,可以更有效地执行此操作,尝试查找有关这些其他方法的信息