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

10.Multiply Evens by Odds - Java

Java

Добър ден,
имам проблем със задача 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

 

А това кода ми:

https://pastebin.com/RDNNwXxJ

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

Тагове:
0
Programming Fundamentals 16/04/2020 15:13:38
MartinBG avatar MartinBG 4803 Точки

Кодът не се компилира, като причините са видими още в IDE-то, така че ще ги пропусна.

Проблемът, който явно те затруднява, е парсването на входните данни към масив от числа.

Ето един начин, който най-вероятно не си виждала все още, но ще се опитам да обясня какво прави. Дори и да не го разбереш сега, не е проблем - тези неща ще ги учите по-късно в курса, а в практиката се ползват постоянно:

 

        int[] numbers = scanner.nextLine() //прочита ред от конзолата, напр.: "-12345"
                .chars() //преобразува го до int поток (stream) от ASCII кода на всеки символ: 45, 49, 50, 51, 52, 53 
                .filter(Character::isDigit) //пропуска само кодовете, които отговарят на цифри: 49, 50, 51, 52, 53
                .map(Character::getNumericValue) //преобразува кодовете до тяхната цифрова стойност (int) : 1, 2, 3, 4, 5
                .toArray(); //създава int[] с всички цифри: [ 1, 2, 3, 4, 5 ]

 

 

Допълнителна информация, ако ти е интересно:

ASCII

Stream<T> Java Doc

Java 8 Stream Tutorial

1
Bars1967 avatar Bars1967 9 Точки
import java.util.Arrays;
import java.util.Scanner;

public class MultiplyEvensbyOdds {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int input = Integer.parseInt(scanner.nextLine());
        if(input<0){
            input=input*(-1);
        }
        int multiple = getMulOffEandO(input);
        System.out.println(multiple);


    }

    private static int getMulOffEandO(int number) {
        int evenSum = getSumOfEven(number);
        int oddSum = getSumOfOdd(number);
        return evenSum * oddSum;
    }

    private static int getSumOfOdd(int number) {
        int oddSum = 0;
        while (number != 0) {
            // num = num/10
            int digits = number % 10;
            if(digits % 2 ==1) {
                oddSum += digits;
            }
            number /=10;

        }
        return oddSum;
    }

    private static int getSumOfEven(int number) {
        int evenSum = 0;
        while (number != 0) {
            // num = num/10
            int digits = number % 10;
            if(digits % 2 ==0) {
                evenSum += digits;
            }
            number /=10;

        }
        return evenSum;

    }
}
0
Bars1967 avatar Bars1967 9 Точки

Защото идеята е да се използват методи, а не "както ти дойде" :)

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