首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法来获取ArrayList的和。

方法来获取ArrayList的和。
EN

Stack Overflow用户
提问于 2014-09-01 03:16:18
回答 5查看 2.6K关注 0票数 1

我正在获取各种字符串ArrayLists的总和,例如1,3,4...通过将它们解析为整数并获得总数。当我对每个单独的值进行编码时,这是有效的,但是当我通过传入总的int值和arraylist来创建一个方法时,我总是得到一个零值。

一种方法可以节省很多时间。

代码语言:javascript
复制
public class Playing {
  static ArrayList<String> list;
  static int Vigor;

  public static void main(String[] args) {
     list = new ArrayList<String>();           
      vigoroustotal(list,Vigor);




 public static void Listtotal(String par, int tt) {

    for (String s : par) {
        int i = Integer.parseInt(s);
        tt += i;

    }
}
EN

回答 5

Stack Overflow用户

发布于 2014-09-01 03:18:26

您在方法中对tt所做的任何更改都不会在其他任何地方可见,因为Java值传递所有内容。使该方法返回一个int类型。

票数 5
EN

Stack Overflow用户

发布于 2014-09-01 03:21:18

你的错误是传递了函数tt并期望它被修改。Java不会修改传递给函数的参数。修正后的代码如下:

代码语言:javascript
复制
public static int ListTotal(List<String> par) {
    int tt = 0;
    for (String s : par) {
        int i = Integer.parseInt(s);
        tt += i;

    }

    return tt;
}

并将像这样使用:

代码语言:javascript
复制
Vigor = ListTotal(list);
票数 2
EN

Stack Overflow用户

发布于 2014-09-01 03:22:38

如上所述,您需要返回总数,因为java按值传递所有内容,因此您传递的int tt不会包含对方法外部Vigor变量的引用。

因此,当你传入诸如(int,char,boolean,byte等)这样的基本类型时,你在方法中对它们所做的任何事情在方法之外都是不可见的。但是,当您传入引用类型(如ArrayList之类的对象)时,它仍然是按值传递的,但该值是方法外部对对象的引用的副本。因此,在下面的populateList方法中,我只能在输入上调用ArrayList.add(),因为即使该输入是按值传递的,它仍然指向放入该方法的原始对象。

代码语言:javascript
复制
public class Playing {
    static ArrayList<String> list;
    static int Vigor;

    public static void main(String[] args) {
        list = new ArrayList<String>(); 
        populateList(list);          
        Vigor = getListTotal(list);
        System.out.println("Total is:\t" + Vigor);
    }

    public static void populateList(ArrayList<String> list) {
        String[] sampleData = { "4", "7", "2" };
        for(int i = 0; i < sampleData.length; i++) {
            list.add(sampleData[i]);
        }
    }

    public static int getListTotal(ArrayList<String> list) {
        int tt = 0;
        for (String s : list) {
            int i = Integer.parseInt(s);
            tt += i;
        }
        return tt;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25595395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档