-1
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。

4

1 回答 1

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])。只要项目不等于第一个,它就会输出。

于 2013-05-28T16:44:59.110 回答