【问题标题】:Adding Arraylist values method java添加Arraylist值方法java
【发布时间】:2014-10-31 05:19:18
【问题描述】:

我想创建一个方法来添加 Arraylist firstRow。但我不断收到错误 nullPointerexception。这是因为getArraylistsum()方法中的for循环for(int i = 0; i<firstRow.length; i++)

这是整个代码:

int[] row1;

public int getArraylistsum(){
    int sum = 0;
    for(int i = 0; i<row1.length; i++){
        sum += row1.length;
    }
    return sum;
}

public static void main(String[] args){
    ArrayList<Integer> row1 = new Arraylist<>(10); 
    row1.add(1);
    row1.add(8);
    row1.add(6);

    ClassName row = new ClassName(); 
    System.out.println(row.getArraylistsum());

}

感谢您的帮助。

【问题讨论】:

  • 也许你可以在第一行写类似int[] row1 = new int[10]; 的东西——实际上是创建数组而不是仅仅声明它。此外,为该数组使用与在 main 中创建的 ArrayList 使用相同的名称是一个非常糟糕的主意。
  • @DavidWallace 我猜 row1 的值从未传递给 getArraylistsum 函数
  • @KickButtowski 我想这将是 Supernatural 在本网站上的下一个问题的一般要点。
  • @DavidWallace 另一个问题是操作在 main 中使用 arraylist,在函数中使用 array。那么操作如何将 arraylist 的大小与 array 匹配?天知道
  • @DavidWallace 忍不住对你们的 cmets 大笑 :D :'( :D

标签: java methods arraylist


【解决方案1】:

你还没有初始化

  int[] row1;// when you create a instance of a class this row1 will null

那么row1.length给你NullPointerException

row1在使用前需要初始化。

 int[] row1=new int[size];

【讨论】:

    【解决方案2】:

    我认为 int[] row1 不是必需的,并且值也没有分配给 row1 数组。而不是使用 row1 数组,而是将 row1 数组列表传递给您的方法。在 main 函数中,ArrayList 写成 Arraylist。我将其更改为 Arraylist。

     public int getArraylistsum(ArrayList<Integer> row1){
    
        int sum = 0;
        for(int i = 0; i<row1.size(); i++){
            sum += row1.get(i);
        }
        return sum;
    }
    
    public static void main(String[] args){
        ArrayList<Integer> row1 = new ArrayList<Integer>(10); 
        row1.add(1);
        row1.add(8);
        row1.add(6);
    
        ClassName row = new ClassName(); 
        System.out.println(row.getArraylistsum(row1));
    
    }
    

    【讨论】:

      【解决方案3】:

      ArrayList&lt;Integer&gt; row1 在您的 main 方法中声明和初始化。您的 getArraylistsum() 尝试访问未初始化的不同 int[] row1 变量。因此它会导致NullPointerException

      【讨论】:

        【解决方案4】:

        首先初始化row1

        int[] row1;
        

        在您的情况下,由于 row1 未初始化,您正在尝试访问该 row1 的长度,这就是您收到NullPointerException的原因

        【讨论】:

          【解决方案5】:

          您正在使用两个row1 变量。 通过 static ArrayList&lt;Integer&gt; row1; 而不是 int[] 声明 List,使 ArrayList 变量成为静态类变量。 在 Main 方法中,您应该使用 ClassName.row1 = new ArrayList&lt;Integer&gt;();

          【讨论】:

            【解决方案6】:

            null.length 绝对给你NullPointerException int[] row1 = null; 并且您正在调用 null 实例上的方法 getArraylistsum() 方法。

            使用以下代码在 getArraylistsum() 方法中初始化 row1 实例。

            row1=new int[大小];

            【讨论】:

              【解决方案7】:

              你应该为每个函数使用

              public int getArraylistsum(ArrayList<Integer> row1){
              
                  int sum = 0;
                  for(int i:row1){
                      sum += i;
                  }
                  return sum;
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-10-01
                • 1970-01-01
                • 1970-01-01
                • 2015-01-16
                • 1970-01-01
                • 2016-09-15
                • 2023-03-05
                • 1970-01-01
                相关资源
                最近更新 更多