Java中的数组操作出错
我试图找到Java数组中某些元素的总和。这个数组有5个元素,如果它的三个元素有相同的值,我希望求和Java中的数组操作出错,java,arrays,Java,Arrays,我试图找到Java数组中某些元素的总和。这个数组有5个元素,如果它的三个元素有相同的值,我希望求和 sum+=numrat[i]; 首先我按升序排列。然后放入if条件。 当我尝试执行此操作时,if条件行中出现错误 如果三个元素的值相同,有人能告诉我如何控制它们吗?这是我的代码: public int katerNjesoj() { int[]numrat=新的int[zar.length]; 对于(int i=0;i您无法比较“三倍”条件,您需要将其拆分为两个CHCK if((numrat[1
sum+=numrat[i];
首先我按升序排列。然后放入if条件。
当我尝试执行此操作时,if条件行中出现错误
如果三个元素的值相同,有人能告诉我如何控制它们吗?这是我的代码:
public int katerNjesoj()
{
int[]numrat=新的int[zar.length];
对于(int i=0;i您无法比较“三倍”条件,您需要将其拆分为两个CHCK
if((numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4]) || (numrat[3] == numrat[4] && numrat[4] == numrat[5]))
作为旁注,Array
索引是从0到数组大小-1,而不是从1到数组大小
if((numrat[0] == numrat[1] && numrat[1] == numrat[2]) || (numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4]))
此外,无需在每次迭代中检查条件,可以对当前数组中的数字执行true
或false
。只需将if
置于循环之外即可
if((numrat[0] == numrat[1] && numrat[1] == numrat[2]) || (numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4])) {
for(int i = 0 ; i < zar.length ; i++) {
sum+=numrat[i];
}
}
如果地图上有数字,我们将值增加1,如果没有,我们将数字添加到地图上,值为1。如果hastree
为真,我们发现三个相等的值
当然,您可以将计数与检查相结合,如果hastree
为true,则返回总和,否则返回0(根据您的逻辑);您无法比较“三倍”条件,需要将其拆分为两个chck
if((numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4]) || (numrat[3] == numrat[4] && numrat[4] == numrat[5]))
作为旁注,Array
索引是从0到数组大小-1,而不是从1到数组大小
if((numrat[0] == numrat[1] && numrat[1] == numrat[2]) || (numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4]))
此外,无需在每次迭代中检查条件,可以对当前数组中的数字执行true
或false
。只需将if
置于循环之外即可
if((numrat[0] == numrat[1] && numrat[1] == numrat[2]) || (numrat[1] == numrat[2] && numrat[2] == numrat[3]) || (numrat[2] == numrat[3] && numrat[3] == numrat[4])) {
for(int i = 0 ; i < zar.length ; i++) {
sum+=numrat[i];
}
}
如果地图上有数字,我们将值增加1,如果没有,我们将数字添加到地图上,值为1。如果hastree
为真,我们发现三个相等的值
当然,您可以将计数与检查结合起来,如果hastree
为真,则返回总和,否则返回0(根据您的逻辑);您无法将三个数字与numrat[1]==numrat[2]==numrat[3]
进行比较,因为第一次比较返回的是布尔值,无法与第三个数字进行比较
换成
(numrat[1]==numrat[2] && numrat[2]==numrat[3])
除此之外,您只想在满足条件的情况下计算总和,因此循环应该在if语句中,而不是相反:
if ((numrat[0]==numrat[1] && numrat[1]==numrat[2])||(numrat[1]==numrat[2]&&numrat[2]==numrat[3])||(numrat[2]==numrat[3]&&numrat[3]==numrat[4]))
for(int i=0;i<numrat.length;i++) {
sum+=numrat[i];
}
if((numrat[0]==numrat[1]&&numrat[1]==numrat[2])|;(numrat[1]==numrat[2]&&numrat[2]==numrat[3])|(numrat[2]==numrat[3]&&numrat[4]))
对于(int i=0;i您无法将三个数字与numrat[1]==numrat[2]==numrat[3]
进行比较,因为第一次比较返回一个布尔值,无法与第三个数字进行比较
换成
(numrat[1]==numrat[2] && numrat[2]==numrat[3])
除此之外,您只想在满足条件的情况下计算总和,因此循环应该在if语句中,而不是相反:
if ((numrat[0]==numrat[1] && numrat[1]==numrat[2])||(numrat[1]==numrat[2]&&numrat[2]==numrat[3])||(numrat[2]==numrat[3]&&numrat[3]==numrat[4]))
for(int i=0;i<numrat.length;i++) {
sum+=numrat[i];
}
if((numrat[0]==numrat[1]&&numrat[1]==numrat[2])|;(numrat[1]==numrat[2]&&numrat[2]==numrat[3])|(numrat[2]==numrat[3]&&numrat[4]))
for(int i=0;i不应将if放入for循环,应将for循环放入if语句,并使用and(&&)运算符将其拆分为更多条件。不应将if放入for循环,应将for循环放入if语句,并使用and(&&&)运算符将其拆分为更多条件operatorok谢谢,但我如何控制其中3个是否具有相同的值,但使用numrat[I]而不是numrat[1],numrat[2]等?好的谢谢,但我如何控制其中3个是否具有相同的值,但使用numrat[I]而不是numrat[1],numrat[2]等?好的谢谢,但我如何控制其中3个是否具有相同的值,但使用numrat[I]而不是numrat[1],numrat[2]等?好的,谢谢,但我如何控制其中3个是否具有相同的值,但使用numrat[I]而不是numrat[1],numrat[2]等?