int[] material = {6255,6255,5003};
int sumQuan = 0;
int []quantity = {6,5,1};
String []calc = {"1","1","0"};
int len = material.length;
int a = material[0];
for(int i = 0; i < len; i++)
{
if(a==material[i] && calc[i]=="1")
{
sumQuan = sumQuan+quantity[i];
}
else if(calc[i]=="0"){
sumQuan = 0;
}
else
{
sumQuan = quantity[i];
}
System.out.println(sumQuan);
}
我想返回11,0,但它返回6,11,0。
答案 0 :(得分:1)
对于每次迭代,您必须在循环的开头/结尾初始化sumQuan
到0
。此外,假设您的数组已排序,您必须继续增加索引,并且只要该项目等于前一个项目,就不会重置总和。像这样:
sumQuan = 0;
for(int i = 0; i < len; i++)
{
if(calc[i].equals("1"))
{
sumQuan = sumQuan+quantity[i];
}
// we don't need to do anything if it's "0"
if ((i < material.length-1 && material[i+1] != material[i])
|| (i == material.length-1)) {
System.out.println(sumQuan);
sumQuan = 0;
}
}
这样,当您在material
中拥有相同的值时,您将继续添加总和。
如果您只想稍微更改一下代码,可以将print语句保留在else
条件的(a == material[i])
分支中。只有当项目不等于第一项时,它才会输出。