0

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

私人无效平均值(字符串置信度){

    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);
    }

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

4

3 回答 3

0

您需要在添加之前进行转换。+on Strings 表示连接。

    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
于 2013-02-12T18:12:22.363 回答
0

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

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

于 2013-02-12T18:12:57.900 回答
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);
}
于 2013-02-12T18:17:49.647 回答