Java 检查数组的值是否相等
我正在创建一个程序,生成一个数字序列,并将其值存储到一个双精度数组中。基本上,它是一个随机输出4个骰子的计算器,带有一个布尔测试条件来检查所有四个骰子值是否相同。随后将出现一条胜利消息 有人能帮我写下这个代码吗?我对Java非常陌生:)是的,它在Java上 字符串的方法也是具体的,所以我不需要担心Java 检查数组的值是否相等,java,Java,我正在创建一个程序,生成一个数字序列,并将其值存储到一个双精度数组中。基本上,它是一个随机输出4个骰子的计算器,带有一个布尔测试条件来检查所有四个骰子值是否相同。随后将出现一条胜利消息 有人能帮我写下这个代码吗?我对Java非常陌生:)是的,它在Java上 字符串的方法也是具体的,所以我不需要担心 private int[] sequence = { 1, 1, 1, 1 }; // this is just an example ... public boolean areTheseDiceE
private int[] sequence = { 1, 1, 1, 1 }; // this is just an example
...
public boolean areTheseDiceEqual()
{
// No idea how to go about this
}
任何帮助都将不胜感激 发布伪代码答案只是一个算法,根据需要修改和测试:
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;
}
public boolean haveDuplicates(双[]骰子1,双[]骰子2)
{
boolean has_duplicates=false;
对于(int i=0;i
我想没有比这更优雅的方法了。尝试遍历数组:
double previous = sequence[0];
for(int i =1; i < sequence.length; i++){
if(sequence[i] != previous)
return false;
previous = sequence[i];
}
return true;
double-previous=序列[0];
for(int i=1;i
如果需要,这应该适用于多于4个元素的数组。您可以存储数组第一个位置的变量,并在后面位置的任何值不具有相同值时返回false
public boolean areTheseDiceEqual() {
double firstDie = -1;
for(oneDie : sequence) {
firstDie = (firstDie == -1 ? oneDie : firstDie);
if(firstDie != oneDie) {
return false;
}
}
return true;
}
我们不需要看前面的骰子,因为第一个差值足以返回false,所以您可以简单地这样写:
private boolean areTheseDiceEqual(){
int firstShot=shots[0];
for (int i = 1; i < shots.length; i++) {
if(firstShot!=shots[i]){
return false;
}
}
return true;
}
我想应该注意的是,代码应该比较序列中的每个值,以便使用某种形式的for循环。如果有人回答这个问题,您能否解释一下您是如何获得结果的?我想学习!提示:sequence[0]
是第一个元素,sequence[1]
第二个,等等;您应该在这里使用int
,而不是double
;您可以比较两个int
是否与=
相等,如果只有s[1]
和s[3]
是平等的吗?@NikosM。然后这个表达是错误的
,我认为这是OP想要的,尽管标题是这样的。这很有魅力,我也理解它。它很聪明。我经常发现很难想象我想做什么,但像你这样的人却能很快地把它从你的脑袋里弄出来。非常感谢你!我也是我也很喜欢这个答案^:)很好。如果序列没有长度,这种方法不会抛出错误。@ericbn它的工作原理是假设两个不同的骰子序列被检查是否重复,不清楚哪个检查是不需要的,所以添加了这个,如果需要,我可以修改它。要看它是否工作,只需分析他想要检查的算法“如果所有四个骰子值相同".看ste fu的答案…@ericbn,好吧,我看到了这个,所以这个答案是关于寻找重复的,问题的标题不清楚,但我留下它,以防有人发现它有用,它已经提到了,这是它假设的。好吧,检查两个骰子数组中是否有一个重复的值肯定不会检查areTheseDiceEqual
…@ericbn,足够公平,编辑答案
private boolean areTheseDiceEqual(){
int firstShot=shots[0];
for (int i = 1; i < shots.length; i++) {
if(firstShot!=shots[i]){
return false;
}
}
return true;
}
@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;
}