Алгоритми – юли 2019 - онлайн
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 3074 Точки

Кодът не се компилира, като причините са видими още в 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

0