Devashree Sen Ответов: 2

Сумма цифр в четных и нечетных местах массива


несколько чисел задаются пользователем
для данного числа если его количество чисел четное суммируйте все числа в четном месте
Если количество чисел нечетное суммируйте все числа в нечетном месте
Затем суммируйте результаты для всех входных данных и распечатайте
Пример: введите размер
5
Введенный номер
123(1+3=4)
2536(5+6=11)
2(2)
57(7)
76542(7+5+2=14)
Выход: 38 (4+11+2+7+14)

Я получаю ошибку Array Index out of Bounds. Как мне решить эту проблему?

Что я уже пробовал:

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int size=sc.nextInt();
        System.out.println("Enter numbers: ");
        int a[]=new int[size];
        int sume=0,sumo=0,r;
        for(int i=0;i<size;i++)
        {
            a[i]=sc.nextInt();
        }
        for(int i=0;i<size;i++)
        {
            for(int j=1;a[j]!=0;j++,a[j]=a[j]/10)
            {
                r=a[j]%10;
                if(a.length%2==0)
                {
                    sume=sume+r;
                }
                else 
                {
                    sumo=sumo+r;
                }
            }
            
        }
        double sum=sume+sumo;
            System.out.println(sum);
    }
}

Sandeep Mewara

Использовать вопрос улучшить и обновить код. В настоящее время она не завершена.

2 Ответов

Рейтинг:
2

OriginalGriff

Посмотри, что ты делаешь.:

while(a[j]!=0)
{
    a[j] = a[j]/10;
     count++;
}
В чем же заключается ценность a[j] после петли?
Прочитайте вопрос еще раз и подумайте о том, что он просит вас сделать. Как бы вы сделали это вручную?
Это может помочь: Как написать код для решения проблемы, руководство для начинающих[^]


Рейтинг:
0

Patrice T

int count=0;
while(a[j]!=0)
{
    a[j] = a[j]/10;
     count++;
}
if(count%2==0) // at this point, a[j]==0
{
    sume=sume+a[j]%10; // so sume stay 0
}
else
{
    sumo=sumo+a[j]%10; // so sumo stay 0
}

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

jdb - отладчик Java[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


CPallini

5.

Patrice T

Спасибо