使用另一个数组中的条件从1个数组中添加数字

时间:2013-05-28 16:32:13

标签: java arrays

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。

1 个答案:

答案 0 :(得分:1)

对于每次迭代,您必须在循环的开头/结尾初始化sumQuan0。此外,假设您的数组已排序,您必须继续增加索引,并且只要该项目等于前一个项目,就不会重置总和。像这样:

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])分支中。只有当项目不等于第一项时,它才会输出。