如何总结具有String类型的arraylist的元素?

时间:2013-02-12 17:59:29

标签: string types arraylist sum

我有一个由十进制数组成的arraylist,我应该取这个arraylist的最后4个元素的平均值。这些有理数是String的类型。

private void average(String confidence){

    if(myList.size() >= 4) {

    String  t = myList.get(myList.size()-1); 
    String  d = myList.get(myList.size()-2); 
    String  f = myList.get(myList.size()-3);
    String  h = myList.get(myList.size()-4);    

    String s = (t + d + f+h) ;
    long fin = Long.parseLong(s);
    long result = fin/4 ;
    System.out.println("Average is: "+result);
    }

但是这种方法不起作用。请你告诉我我应该做什么样的改变或者这样做的建议?非常感谢提前!!!

3 个答案:

答案 0 :(得分:0)

您需要在添加之前转换。字符串上的+表示连接。

    if(myList.size() >= 4) {

    //I'm guessing all of these conf.size() calls are meant to be myList.size()
    double  t = Double.parseDouble(myList.get(conf.size()-1)); 
    double  d = Double.pareseDouble(myList.get(conf.size()-2)); 
    double  f = Double.parseDouble(myList.get(conf.size()-3));
    double  h = Double.parseDoublemyList.get(conf.size()-4));   

    double s = (t + d + f+h) ;
    double result = s/3 ; //should be 4
    System.out.println("meanAsrConfidence is: "+result);
    }

您现在正在做的是,例如:

t=1, d=2, f=3, h=4
s = 1234

另外:

  1. 你需要除以4,而不是3
  2. 什么是conf?你为什么不打电话给myList.size()
  3. 当您可能希望传递myList
  4. 时,您将传递一个String作为参数

答案 1 :(得分:0)

您的问题是String s = (t + d + f+h)部分。你现在只需追加4个字符串。 你需要先转换它们。

你的结果是错的,你需要除以4,而不是3。

答案 2 :(得分:0)

Colleen的答案很好,只要你记得改变类型以反映Long.parseLong()返回的内容。我回答,但我太新了。

if(myList.size() >= 4) {

    Double t = Double.parseLong(myList.get(conf.size()-1)); 
    Double  d = Double.pareseLong(myList.get(conf.size()-2)); 
    Double  f = Double.parseLong(myList.get(conf.size()-3));
    Double  h = Double.parseLong(myList.get(conf.size()-4));  

    Double result = (t + d + f + h) / 3 ;

    System.out.println("meanAsrConfidence is: "+result);
}