Loading...
DreoDreo7 avatar DreoDreo7 0 Точки

Multiply Evens by Odds

Здравейте,
имам проблем със задача 10. Multiply Evens by Odds от лекцията Methods.

Create a program that reads an integer number and multiplies the sum of all its even digits by the sum of all its odd digits:

Examples

Input

Output

Comments

12345

54

12345 has 2 even digits - 2 and 4. Even digits have sum of 6.

Also it has 3 odd digits - 1, 3 and 5. Odd digits have sum of 9.

Multiply 6 by 9 and you get 54.

-12345

54

 

Изпитвам затруднение със записа, когато числото е отрицателно.

Това е кодът ми:

package com.company;
import java.util.Arrays;
import java.util.Scanner;

public class MultiplyEvensByOdds {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int[] numbers= Arrays.stream(s.nextLine().split("")).
                mapToInt(e-> Integer.parseInt(e)).toArray();

        int es=0, os=0;
        for (int i=0;i<numbers.length;i++){
            if (numbers[i]%2==0){
                es+=numbers[i];
            } else {
                os+=numbers[i];
            }
        }
        System.out.println(es*os);
    }
}

Благодаря предварително

 

Тагове:
0
Programming Fundamentals
krum_43 avatar krum_43 756 Точки

Проблема ти идва от това,че прочиташ числото като масив от цели числа.

Ако си прочетеш числото като стринг проблема с минуса се решава с една проверка.

Ето ти едно решение на C#:

namespace Multiplay_Even_By_Odd
{
    class Program
    {
        static void Main(string[] args)
        {
            string line = Console.ReadLine();
            int SumEven = 0;
            int SumOdd = 0;
            int output = 0;
            for (int i = 0; i < line.Length; i++)
            {
                if (line[i] == '-')
                {
                    continue;
                }
                else
                {
                    if (line[i] % 2 == 0)
                    {
                        SumEven +=int.Parse(line[i].ToString());
                    }
                    else
                    {
                        SumOdd +=int.Parse(line[i].ToString());
                    }
                }
            }
            output = SumEven * SumOdd;
            Console.WriteLine(output);
        }
    }
}
 

0
DreoDreo7 avatar DreoDreo7 0 Точки

Добре, но в джава не ми позволява line[i] да го използвам когато е стринг, а трябва да прескоча първия елемент ако е "-". Това ми е проблемът, че не знам как да го напиша като код.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.