Вот код:
public static int MaxProduct(int... a){ // the max possible product from an array
int i = 0;
int j = 0;
int m = 0;
int n = a.length;
while (i<n){
j++;
while(j<n ){
if (a[i]*a[j] > m){
m = a[i]*a[j];
j++;
}
}
i++;
}
return m;
}
System.out.println(MaxProduct(1,2,3,4,5));
Алгоритм работает должным образом (после проверки и составления таблицы отладчика). Для первого индекса массива он проверяет все возможные продукты и редактирует m соответственно от 1 до 5. И затем, когда j
равен 5 a[j]
, понятно, что это выходит за пределы, поскольку в массиве всего 5 элементов
Затем я вижу ошибку arrayoutofbounds в отладчике рядом (опять же, это то, чего ожидает id), но вместо того, чтобы увеличивать i, а второй, пока l oop запускает цикл снова, a [i] остается равным 1, алгоритм завершает работу, и я получаю вывод 5
Как мне получить это на выходе 20 (4x5)