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)
最佳答案
您循环正确。
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
这将循环0, 1, 2, 3, 4 , 5
并且不要超过索引总数
关于java - 以 ArrayList 作为参数相乘列表元素的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37287310/