Я пытаюсь создать небольшую программу на Java.Amazon Mosquitos - ArrayIndexOutOfBounds
Программа имеет вход 3 типа: S: стартовые комары, K: количество детей, каждый москит, и N: количество дней, которые мы «исследуем».
Каждый москит в Амазонке живет 1 день. День 0, мы начинаем с S комаров. В один прекрасный день, когда живет каждый комар, он делает только две вещи. Во-первых, он атакует одного человека. Сразу после нападения комара рождает комаров 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));
}
}
Где IOUtil.readInt() является функцией для чтения входных Ints.
Однако, я получаю эту ошибку:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
at AmazMosq.reproduction(AmazMosq.java:11)
at AmazMosq.main(AmazMosq.java:34)
Что это значит и что я сделал не так? Спасибо!
документация Javadoc обычно помогает в понимании того, какие исключения имели в виду: http://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html – jalynn2