Найти сумму всех четных и сумму нечетных элементов массива

264
22 мая 2018, 12:30

Начал изучать java. Получил такое задание "Найти сумму всех четных и сумму нечетных элементов массива". В итоге написал этот код. Но IDEA выдает ошибку "Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2". Не могу въехать почему и как исправить. Кроме этого, числа которые должны попадать в динамический массив even попадают в odd и наоборот. Надеюсь, кто то откликнется :)

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 
 
public class task7 { 
    public static void main(String[] args) { 
        int[] a; 
        Scanner z = new Scanner(System.in); 
        System.out.println("Enter the number of elements in the array"); 
        int n = z.nextInt(); 
        a = new int[n]; 
        for (int i = 0; i <= (n - 1); i++) { //Принимаем все числа массива 
            Scanner x = new Scanner(System.in); 
            System.out.println("Enter" + " " + i + " " + "number of the array"); 
            int b = x.nextInt(); 
            a[i] = b; 
        } 
 
 
 
        List<Integer> even = new ArrayList<Integer>(); 
        List<Integer> odd = new ArrayList<Integer>(); 
        for(int i = 0; i< n; i++){ 
            if (a[i]%2==0) { 
                even.add(i); 
            } 
            else { 
                odd.add(i); 
         } 
        } 
        int sumEven = 0; 
        int sumOdd = 0; 
        for (int i = 0; i < n; i++){ 
            sumEven +=odd.get(i); 
        } 
        for (int i = 0; i < n; i++){ 
          sumOdd+=even.get(i); 
        } 
        System.out.println("Array of even numbers is: " + even); 
        System.out.println("The sum of even numbers is " + sumEven); 
        System.out.println("Array of odd numbers is: " + odd); 
        System.out.println("The sum of odd numbers is " + sumOdd); 
    } 
 
}

Answer 1
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number of elements in the array");
        int command = s.nextInt();
        int numbers[] = new int[command];
        for (int i = 0; i < numbers.length; i++) { //Принимаем все числа массива
            System.out.println("Enter" + " " + i + " " + "number of the array");
            numbers[i] = s.nextInt();
        }
        List<Integer> even = new ArrayList<Integer>();
        List<Integer> odd = new ArrayList<Integer>();
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] % 2 == 0) {
                even.add(numbers[i]);
            } else {
                odd.add(numbers[i]);
            }
        }
        int sumEven = 0;
        int sumOdd = 0;
        for (int i = 0; i < even.size(); i++) {
            sumEven += even.get(i);
        }
        for (int i = 0; i < odd.size(); i++) {
            sumOdd += odd.get(i);
        }
        System.out.println("Array of even numbers is: " + even);
        System.out.println("The sum of even numbers is " + sumEven);
        System.out.println("Array of odd numbers is: " + odd);
        System.out.println("The sum of odd numbers is " + sumOdd);
    }
}

Не надо обявлять 2 сканнера, один можно использовать везде в классе. Выучи Forech loop, он поможет в итерации массивов (я сам не использовал чтобы тебе был понятен код). И я бы посоветовал давать переменным логичные имена (а не "a, b, n, x и тд.), чтобы ты сам и другой человек не терялся в коде. Если будут вопросы по моему коду задавай, не стесняйся.

READ ALSO
java график популярности [закрыт]

java график популярности [закрыт]

привет всем у меня такая проблема, пишу свой первый проект на java (Spring Boot), а именно пишу магазин одежды и мне надо чтобы в графике показывало...

214
Java Map stream

Java Map stream

Есть Map <String, <Person>> persons;

217
Как получить XML строку из Document?

Как получить XML строку из Document?

Как получить XML-строку, если она сгенерирована в Document? Требуется именно String, а не вывод в файл

237
Проверка по слову [дубликат]

Проверка по слову [дубликат]

На данный вопрос уже ответили:

167