Java 亚马逊蚊子-ArrayIndexOutOfBounds
我正在尝试制作一个小Java程序 该程序输入了3个整数:S:开始的蚊子,K:每只蚊子制造的儿童数量,N:我们“调查”的天数 亚马逊地区的每只蚊子活一天。第0天,我们从蚊子开始。每只蚊子生活的一天,它只做两件事。首先,它攻击一个人。袭击后,蚊子立即产下K只蚊子,然后死亡 程序的输出必须是在N天结束时将受到攻击的人数 例如,对于输入(1,2,12),输出必须是8191(1+2+4+8+…+4096) 我的尝试如下:Java 亚马逊蚊子-ArrayIndexOutOfBounds,java,arrays,Java,Arrays,我正在尝试制作一个小Java程序 该程序输入了3个整数:S:开始的蚊子,K:每只蚊子制造的儿童数量,N:我们“调查”的天数 亚马逊地区的每只蚊子活一天。第0天,我们从蚊子开始。每只蚊子生活的一天,它只做两件事。首先,它攻击一个人。袭击后,蚊子立即产下K只蚊子,然后死亡 程序的输出必须是在N天结束时将受到攻击的人数 例如,对于输入(1,2,12),输出必须是8191(1+2+4+8+…+4096) 我的尝试如下: public class AmazMosq { public static
public class AmazMosq {
public static int reproduction(int starting, int children, int days) {
int[] mosquitos = new int[days];
mosquitos[0] = starting;
int bites = starting;
for (int i = 1; i <= days; i++) {
mosquitos[i] = mosquitos[i-1] * children;
bites += mosquitos[i];
}
return bites;
}
public static void main(String[] args) {
System.out.println("Enter the number of starting mosquitos:");
int starting = IOUtil.readInt();
System.out.println("Enter the number of children each mosquito makes everyday:");
int children = IOUtil.readInt();
System.out.println("Enter the number of days:");
int days = IOUtil.readInt();
System.out.println(reproduction(starting, children, days));
}
}
这意味着什么?我做错了什么?
谢谢 这里:
for (int i = 1; i <= days; i++) {
因此,您可以访问0到天-1
之间的元素。您正在访问for
循环中的蚊子[days]
元素,这是问题的原因,具体如下:
mosquitos[i] = mosquitos[i-1] * children;
//^ here ^
bites += mosquitos[i];
// ^ here ^
换成
for (int i = 1; i < days; i++) {
for(int i=1;i
或者更好的方法是:
for (int i = 1; i < mosquitos.length; i++) {
for(int i=1;i
您试图使用蚊子[i]
当i时,javadoc通常有助于理解异常的含义:谢谢!我明白了。但是,为了正确回答,我认为我的错误是初始化数组而不是在循环中。蚊子的长度必须是天+1而不是天。@pavlos55这是问题的另一个解决方案。尽管如此,它仍然是使用array.length
作为上限,而不是另一个变量。
for (int i = 1; i < days; i++) {
for (int i = 1; i < mosquitos.length; i++) {