Java код для генерации значений и суммы через запятую - PullRequest
0 голосов
/ 19 февраля 2020

Во время выполнения этого кода я получаю ArrayIndexOutOfBoundsException.

public class Evensum {

    public static void main(String[] args) {
        int num = Integer.parseInt(args[0]);
        int even[] = new int[num];
        int sum = 0,j = 0;
        String evennums = "";
        //Insert your code here
         for(j=0; j<=num; j++) {
            if(num%2==0) {
                even[j]=num;
                sum=sum+num;
                args[j]= Integer.toString(num);
            }
            evennums=String.join(",", args);
        }    
        System.out.println(evennums);
        System.out.println(sum);
    }
}

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Заменить

for (j = 0; j <= num; j++)

на

for (j = 0; j < num; j++)

Обратите внимание, что первый индекс массива - 0. Следовательно, значение последнего индекса в массиве равно length_of_the_array - 1. Если вы превысите это, вы получите ArrayIndexOutOfBoundsException.

. В вашем коде, в конечном итоге, значение j станет равным num, превышая значение последнего индекса в массиве even и следовательно, вы получите ArrayIndexOutOfBoundsException. Последний индекс в массиве even равен num - 1.

0 голосов
/ 19 февраля 2020
for (j=0; j<=num; j++)

Это неправильно. Должно быть:

for (j = 0; j < num; j++)

Почему? Предположим, num равно 5. До этой строки вы инициализировали even до 5. Индексы even будут 0, 1, 2, 3, 4.

Теперь, с j<=num, вы пытаемся получить доступ к индексу 5, который не существует и, следовательно, является исключением.


args[j]= Integer.toString(num);

Эта строка вызовет еще одно исключение. Я предполагаю, что вы передаете только один параметр из командной строки, который является args[0]. Это означает, что массив args имеет размер 1, и вы не можете добавить к нему больше элементов.

Кроме того, не рекомендуется добавлять / изменять элементы в массиве args. Вы должны создать новый массив для этого.

...