2017-05-07 129 views
-2

我有一个初始化的String数组(FileContent),我已经转换成ArrayList(MatchingContent)。计算每个第三元素的总和 - 数组java

String FileContent =“2017-04-03,11:25,2; 2017-04-02,11:30,8; 2017-04-03,14:42,9”;现在

,我需要通过每3个元素进行迭代,并计算它们的总和,但下面的部分是不工作:

Integer[] intarray=new Integer[MatchingContent.length]; 

    for (int i=0; i<MatchingContent.length; i+=3) 
    { 
     int sum = 0; 

     intarray [i] = Integer.parseInt(MatchingContent[i]); 

     sum = sum + intarray[i]; 

    } 
+1

欢迎堆栈溢出!寻求调试帮助的问题(“为什么这个代码不工作?”)必须在问题本身中包含所需的行为,特定的问题或错误以及必要的最短代码**。没有明确问题陈述的问题对其他读者无益。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

+0

谢谢,但这个声明也不起作用: Integer [] intarray = new Integer [MatchingContent.length]; – Savantes

+1

你怎么知道它不工作? – shmosel

回答

1

你正在申报(并初始化)的循环,这意味着它会里面的sum在每一次迭代中都要进行初始化,覆盖(或丢弃)前一个值。我们需要做的是改变声明,并在循环之外进行,这样,以前的值将被保留。

另外,您不需要Integer[] intarray,因为我们将结果存储在sum中,因此不需要单独存储各个元素。下面是例子:

int sum = 0; 
for (int i=0; i<MatchingContent.length; i++){ 
    if(i % 3 == 0) { 
     sum += Integer.parseInt(MatchingContent[i]); 
    } 
} 

或者

int sum = 0; 
for (int i=0; i<MatchingContent.length; i+=3){ 
    sum += Integer.parseInt(MatchingContent[i]); 
} 
+0

谢谢,但这个声明也不起作用:Integer [] intarray = new Integer [MatchingContent.length]; – Savantes

+0

@Savantes你不需要这个声明了。如果你看到我的答案,我已经删除了这一点,因为它是多余的 –

+0

@DarshanMehta,你不同意,作品? –

相关问题