2013-05-28 46 views
-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。使用另一個陣列的條件從1個陣列中添加數字

+1

NOOOOOOO ...不是'=='而不是'equals':___( – Maroun

回答

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相同的值。

如果您只是想稍微更改代碼,則可以將打印語句保留在(a == material[i])條件的else分支中。它只會在物品不等於第一個時纔會輸出。