【问题标题】:How to sum up elements of an arraylist having type String?如何总结具有字符串类型的数组列表的元素?
【发布时间】:2013-02-12 17:59:28
【问题描述】:

我有一个由十进制数组成的数组列表,我应该取这个数组列表最后 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);
    }

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

【问题讨论】:

    标签: string types arraylist sum


    【解决方案1】:

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

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

    【讨论】:

    • 我做了这些更改,还有一个信息是所有这些数字都是有理数。即使我首先将字符串转换为长字符串,然后将它们总结起来仍然不起作用
    【解决方案2】:

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

    【讨论】:

    • 已编辑,谢谢!好久没用java了,有些api信息记不住了。
    • aaa 而且我还有一个错字,这可能是您实际指的,直到现在我才发现它
    • 我很确定我们需要更多信息。 @user2052015:什么不起作用?期望的输出、您的输入和不正确的输出是什么?
    • 那是我得到的错误:java.lang.NumberFormatException: For input string: "0.98" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Long.parseLong(Unknown来源)
    • 对不起,我没有仔细阅读您的回答。你想使用 Double.parseDouble(); -- 我已经更新了我的答案。
    【解决方案3】:

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

        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 时,您正在传递一个字符串作为参数

    【讨论】:

    • 我在汇总之前将字符串 t,d,f,h 转换为 long 但仍然错误???!!!
    • 我编辑了我的问题,并按照您的说法更改了错误书写的部分。并且所有这些数字都是有理数,例如 7,6 4,5 4,2 0,1。
    • 您的编辑未反映添加前的转换。您仍然有 String 类型,并且没有解析调用。
    • 嘿,@user2052015,我也刚刚意识到我有一个错字。 t、d、f 和 h 的类型在转换后应该是 Long,而不是 String。
    猜你喜欢
    • 2022-07-12
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2020-08-03
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多