Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 亚马逊蚊子-ArrayIndexOutOfBounds_Java_Arrays - Fatal编程技术网

Java 亚马逊蚊子-ArrayIndexOutOfBounds

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

我正在尝试制作一个小Java程序

该程序输入了3个整数:S:开始的蚊子,K:每只蚊子制造的儿童数量,N:我们“调查”的天数

亚马逊地区的每只蚊子活一天。第0天,我们从蚊子开始。每只蚊子生活的一天,它只做两件事。首先,它攻击一个人。袭击后,蚊子立即产下K只蚊子,然后死亡

程序的输出必须是在N天结束时将受到攻击的人数

例如,对于输入(1,2,12),输出必须是8191(1+2+4+8+…+4096)

我的尝试如下:

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++) {