我有一个由十进制数组成的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);
}
但是这种方法不起作用。请你告诉我我应该做什么样的改变或者这样做的建议?非常感谢提前!!!
答案 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
另外:
conf
?你为什么不打电话给myList.size()
? myList
答案 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);
}