Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Сумма цифр натурального числа

#java


Имеется натуральное число n. Например, оно вводится с клавиатуры вот так:

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();


Как я могу получить сумму цифр этого числа?

int sumDigits = ???
System.out.println(sumDigits);

    


Ответы

Ответ 1



вроде как, должно быть так: while(n != 0){ //Суммирование цифр числа sum += (n % 10); n/=10; } System.out.println(sum + " ");

Ответ 2



через for тоже можно, они взаимозаменяемы с while: for(n = sr.nextInt(); n != 0; n /= 10) { sum += (n % 10); } System.out.println(sum + " ");

Ответ 3



У вас цикл не выполняется ни разу, т.к. n изначально не равно 0. Поставьте знак != и все должно заработать. И в цикле добавить строчку n /= 10.

Ответ 4



нельзя задачу решать "в лоб". считать число а потом выполнять кучу операций деления это не лучший вариант, когда у вас есть возможность обработать каждый символ отдельно final Scanner s = new Scanner ( System.in ); final String line = s.nextLine ().trim (); final char [] array = line.toCharArray (); int sum = 0; for ( final char c : array ) { if ( !Character.isDigit ( c ) ) { throw new IllegalArgumentException (); } sum = sum + Character.getNumericValue ( c ); } System.out.println ( "sum = " + sum );

Ответ 5



Для читаемости или чтобы поддерживать числа со многими цифрами, можно Java Stream API использовать. Суммируем значения символов во вводе как десятичных цифр: int sum = input.chars().map(c -> Character.digit(c, 10)).sum(); где input это строка из ввода: String input = scanner.next(); или ввод с консоли: String input = System.console().readLine(); Если ввод дан как int, то простейший цикл работает: for ( ; n > 0; n /= 10) sum += n % 10;

Ответ 6



int digitSum(int number) { return (number == 0) ? 0 : (number % 10) + digitSum(number / 10); }

Ответ 7



package com.company; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int sum = 0; sum(n, sum); } public static void sum(int n, int sum){ if(n!=0){ sum+=n%10; sum(n/10, sum); } else System.out.println(sum); } }

Комментариев нет:

Отправить комментарий