使用ArrayList作为参数的多个列表的方法

时间:2016-05-17 22:35:24

标签: java arraylist

方法product()乘以ArrayList的元素并返回整数'n',这是这些元素的乘法。在Test()类中,调用方法product(),该方法对名为'lis'的ArrayList进行操作,并打印值'n'。

import MathBasic.SimpFraction;
import java.util.ArrayList;

public class Test {

public static void main(String[] args) {

    ArrayList<Integer> lis = new ArrayList<>();

    for (int i=1;i<=6;i++){
        lis.add(i);
    }

    int result = SimpFraction.product(lis);

    System.out.println(result);
    }
}
//mathbasic package

package MathBasic;

import java.util.ArrayList;

public class SimpFraction {
    public static  int product (ArrayList<Integer> m){
        int n = 1;
        for (int i = 0; i <= m.size(); i++) 
           n = n*m.get(i);
        return n;
    }
}

编译代码时,会产生以下错误:

run:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at MathBasic.SimpFraction.product(SimpFraction.java:94)
    at cubicequationTest.main(cubicequationTest.java:32)
C:\(...)\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)

2 个答案:

答案 0 :(得分:1)

您正在循环播放。

{% for t in tools %}
  {% for tag in tags.all %}
    <div class="col-md-3 col-sm-6">
       <div class="c-content-feature-2" data-wow-delay1="1s" data-height="height">
         <h5 class="c-font-uppercase c-center"><a href="{% url "products:tool_list_by_tag" tag.slug %}">{{ tag.name }}</a></h5>
       </div>
   </div>
  {% if not forloop.last %} {% endif %}
 {% endfor %}
{% endfor %}

以上代码让您从public class SimpFraction { public static int product (ArrayList<Integer> m){ int n = 1; for (int i = 0; i <= m.size(); i++)//this is incorrect n = n*m.get(i); return n; } } 循环。当您的列表大小仅为0, 1, 2, 3, 4, 5, 6

时,总共会有7个增量

由于任何列表的第一个索引为6,而您的0应将int i = 0更改为<=

喜欢这样

<

这将循环for (int i = 0; i < m.size(); i++)//this is correct 并且不会超过索引总数

答案 1 :(得分:0)

在产品方法的for循环中,边界条件错误。您想要到达索引6处的元素,但是,大小为6的arraylist最大数字5作为索引。