Сумму цифр целого числа java

Как найти сумму цифр числа java

Сумму цифр числа можно найти, суммируя остаток от деления на 10 :

public class App  public static void main(String[] args)  System.out.println(sumOfDigits(123)); // => 6 > public static int sumOfDigits(int number)  number = Math.abs(number); int sum = 0; while (number > 0)  sum += number % 10; number /= 10; > return sum; > > 

Источник

Как суммировать цифры целого в java?

Мне сложно определить решение этой проблемы. Я пытаюсь разработать программу на Java, которая принимает число, например 321, и находит сумму цифр, в этом случае 3 + 2 + 1 = 6. Мне нужны все цифры любого трехзначного числа, чтобы добавить их вместе, и сохраните это значение, используя символ% остатка. Это меня сбивало с толку, и я был бы признателен за любые идеи.

public static void main(String[] args) < int num = 321; int sum = 0; while (num >0) < sum = sum + num % 10; num = num / 10; >System.out.println(sum); > 

Простое решение с использованием потоков:

int n = 321; int sum = String.valueOf(n) .chars() .map(Character::getNumericValue) .sum(); 

Вы можете сделать это, используя Recursion

//Sum of digits till single digit is obtained public int sumOfDigits(int num) < int sum = 0; while (num >0) < sum = sum + num % 10; num = num / 10; >sum = (sum

Рекурсии всегда быстрее, чем циклы!

public static long sumDigits(long i) < return i == 0 ? 0 : i % 10 + sumDigits(i / 10); >

Разве вы не можете сделать это рекурсивно что-то вроде этого? Я немного новичок в программировании, но я проследил это, и я думаю, что это работает.

Это должно работать нормально для любого количества цифр, и оно будет возвращать отдельную цифру суммы

public static void main(String[] args) < Scanner input = new Scanner(System.in); System.out.println("enter a string"); String numbers = input.nextLine(); //String would be 55 int sum = 0; for (char c : numbers.toCharArray()) < sum += c - '0'; >System.out.println(sum); //the answer is 10 > 

Если вы любите постоянное время, попробуйте это:

double d = 10984.491; // converting to String because of floating point issue of precision String s = new String(d + "").replaceAll("\\D+",""); int i = Integer.parseInt(s); System.out.println(i % 9 == 0 ? 9 : i % 9); 

Логика – это если вы добавите любое число на 9, в результате добавление цифры приведет к тому же числу.

Пример: 6 + 9 = 15, затем 1 + 5 = 6 (снова вы получили 6).

В случае десятичной точки удалите его и добавьте итоговые цифры.

Следующий способ выполнит задачу:

public static int sumOfDigits(int n)

Вы можете использовать его следующим образом:

System.out.printf("Sum of digits = %d%n", sumOfDigits(321)); 
public static void main(String args[]) < int number = 333; int sum = 0; int num = number; while (num >0) < int lastDigit = num % 10; sum += lastDigit; num /= 10; >System.out.println("Sum of digits : "+sum); > 

В Java 8 это возможно в одной строке кода следующим образом:

int sum = Pattern.compile("") .splitAsStream(factorialNumber.toString()) .mapToInt(Integer::valueOf) .sum(); 

Возможно, слишком поздно, но я вижу, что многие решения, размещенные здесь, используют сложность времени O (n ^ 2), это нормально для небольших входов, но по мере того, как вы продвигаетесь с большими входами, вы можете уменьшить временную сложность, Вот что я сделал, чтобы сделать то же самое в линейной временной сложности.

ПРИМЕЧАНИЕ. Второе решение, размещенное Arunkumar, является постоянной временной сложностью.

 private int getDigits(int num) < int sum =0; while(num >0) < //num consists of 2 digits max, hence O(1) operation sum = sum + num % 10; num = num / 10; >return sum; > public int addDigits(int N) < int temp1=0, temp2= 0; while(N >0) < temp1= N % 10; temp2= temp1 + temp2; temp2= getDigits(temp2); // this is O(1) operation N = N/ 10; >return temp2; > 

Пожалуйста, проигнорируйте мое соглашение об именах переменных, я знаю, что это не идеально. Позвольте мне объяснить код с образцом ввода, например. “12345”. Выход должен быть 6, в одном обходе.

В основном, что я делаю, я перехожу от LSB к MSB и добавляю цифры найденной суммы на каждой итерации.

Изначально temp1 = temp2 = 0

N | temp1 ( N % 10) | temp2 ( temp1 + temp2 ) 12345 | 5 | 5 1234 | 4 | 5 + 4 = 9 ( getDigits(9) = 9) 123 | 3 | 9 + 3 = 12 = 3 (getDigits(12) =3 ) 12 | 2 | 3 + 2 = 5 (getDigits(5) = 5) 1 | 1 | 5 + 1 = 6 (getDigits(6) = 6 ) 

Ответ равен 6, и мы избегали одного дополнительного цикла.
Надеюсь, это поможет.

Может быть немного поздно.. но вот как вы можете это сделать рекурсивно

public int sumAllDigits(int number) < int sum = number % 10; if(number/10 < 10)< return sum + number/10; >else < return sum + sumAllDigits(number/10); >
public int sum(int number) < return (number + "").chars() .map(digit ->digit % 48) .sum(); > 

Преобразует число в строку, а затем каждый символ сопоставляется с его цифровым значением, вычитая значение ascii ‘0’ (48) и добавляя к окончательной сумме.

Суммирует все цифры независимо от размера номера.

private static int sumOfAll(int num) < int sum = 0; if(num >10) < sum += num % 10; while((num = num / 10) >= 1) < sum += (num >10) ? num%10 : num; > > return sum; > 

Если вам нужна строчка, думаю, это очень хорошее решение:

int sum(int n)< return n >= 10 ? n % 10 + sum(n / 10) : n; > 

Java 8 Рекурсивное решение, если вы не хотите использовать какие-либо потоки.

UnaryOperator sumDigit = num -> num  
Long sum = sumDigit.apply(123L); 

Вышеупомянутое решение будет работать для всех положительных чисел. Если вы хотите получить сумму цифр независимо от положительного или отрицательного значения, воспользуйтесь приведенным ниже решением.

UnaryOperator sumDigit = num -> num  

без картирования → более быстрое лямбда-решение

Integer.toString( num ).chars().boxed().collect( Collectors.summingInt( (c) -> c - '0' ) ); 
Integer.toString( num ).codePoints().boxed().collect( Collectors.summingInt( Character::getNumericValue ) ); 

Вот простая программа для суммы цифр номера 321.

 import java.math.*; class SumOfDigits < public static void main(String args[]) throws Exception < int sum = 0; int i = 321; sum = (i % 10) + (i / 10); if (sum >9) < int n = (sum % 10) + (sum / 10); System.out.print("Sum of digits of " + i + " is " + n); >else < System.out.print("Sum of digits of " + i + " is " + sum ); >> > Output: Sum of digits of 321 is 6 

Или просто вы можете использовать этот..check ниже программы.

public class SumOfDigits < public static void main(String[] args) < long num = 321; /* int rem,sum=0; while(num!=0) < rem = num%10; sum = sum+rem; num=num/10; >System.out.println(sum); */ if(num!=0) < long sum = ((num%9==0) ? 9 : num%9); System.out.println(sum); >> 

Моя более простая, чем другие, надеюсь, вы можете это понять, если вы какой-то новый программист, как я.

import java.util.Scanner; import java.lang.Math; public class DigitsSum < public static void main(String[] args) < Scanner in = new Scanner(System.in); int digit = 0; System.out.print("Please enter a positive integer: "); digit = in.nextInt(); int D1 = 0; int D2 = 0; int D3 = 0; int G2 = 0; D1 = digit / 100; D2 = digit % 100; G2 = D2 / 10; D3 = digit % 10; System.out.println(D3 + G2 + D1); >> 

В дополнение к ответам здесь я могу немного объяснить. Это на самом деле математическая проблема.

321 – общее число 300 + 20 + 1.

Если вы разделите 300 на 100, вы получите 3.

Если вы разделите 20 на 10, вы получите 2.

Если вы разделите 1 на 1, вы получите 1.

В конце этих операций вы можете суммировать их все, и вы получите 6.

public class SumOfDigits < public static void main(String[] args) < int myVariable = 542; int checker = 1; int result = 0; int updater = 0; //This while finds the size of the myVariable while (myVariable % checker != myVariable) < checker = checker * 10; >//This for statement calculates, what you want. for (int i = checker / 10; i > 0; i = i / 10) < updater = myVariable / i; result += updater; myVariable = myVariable - (updater * i); >System.out.println("The result is " + result); > > 

Источник

Подсчитать сумму цифр в целом числе

Рекурсия, подсчитать количество цифр в заданном целом числе
Подсчитать количество цифр в заданном целом числе n

Подсчитать количество цифр в заданном натуральном числе и найдите сумму цифр заданного натурального числа
Подсчитать количество цифр в заданном натуральном числе и найдите сумму цифр заданного натурального.

Подсчитать количество цифр в заданном числе n, сумму цифр числа n, и выяснить, входит ли цифра 3 в его запись
Задано натуральное число n. Составить программу, которая подсчитывает количество цифр в числе n.

1 2 3 4 5 6 7 8 9 10 11 12
public class B{ public static void main (String[] args){ String s="1234"; String[] a = s.split(""); int m=0; for(int i=1;ia.length;i++){ m+=Integer.parseInt(a[i]); } System.out.println(m+""); } }
1 2 3 4 5 6 7 8 9 10 11 12
public class demo { public static void main(String[] args) { int k = 12345; int x =k; int s = 0; while (x != 0 ){ s +=x%10; x /=10; } System.out.println("Сумма цифр в числе " + k + " = " + s); } }

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import java.util.Scanner; class DigitsCounter { private static int digitsCount(int n) { return ( n  0 ) ? digitsCount(-n) : ( n == 0 ) ? 1 : (int)Math.log10(n) + 1; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); while ( true ) { System.out.print("Number: "); if ( ! sc.hasNextInt() ) break; int n = sc.nextInt(); System.out.println(digitsCount(n) + " digits"); } } }

Эксперт Java

ЦитатаСообщение от easybudda Посмотреть сообщение

оригинальный способ, я обычно в строку и ее длину 🙂

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

turbanoff, а как Вы себе это число представляете положительным 32-битным целым? Да и выпендрёжные варианты исключительно для выпендрёжа, а не чтобы во всех маргинальных случаях работали.

Эксперт Java

ЦитатаСообщение от easybudda Посмотреть сообщение

А зачем это делать? Вы же считаете только количество цифр, вам не нужно его "представлять" в каком-либо другом виде.

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

turbanoff, то есть нужно было написать комментарий с той частью курса математики, в которой объясняется, почему не бывает числа, в степень которого нужно возвести число 10, чтобы получить отрицательное число, или хотябы ноль. Добавить небольшой трактат на тему машинного представления целых чисел. И всё ради того, чтобы сказать - да, таки эта функция с числом -2147483648 не справится.

Вот вариант с подсчётом суммы цифр в числе, снова выпендрёжный и снова при вводе -2147483648 приводящий к аццкой рекурсии, валящей программу с этим самым Stack. ну Вы в курсе

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import java.util.Scanner; class DigitsSum { private static int digitsSum(int n) { return ( n  0 ) ? digitsSum(-n) : ( n == 0 ) ? 0 : n % 10 + digitsSum(n / 10); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); while ( true ) { System.out.print("Number: "); if ( ! sc.hasNextInt() ) break; int n = sc.nextInt(); System.out.println("Sum of digits: " + digitsSum(n)); } } }

Источник

Как найти сумму цифр числа java

Сумму цифр числа можно найти, суммируя остаток от деления на 10 :

public class App  public static void main(String[] args)  System.out.println(sumOfDigits(123)); // => 6 > public static int sumOfDigits(int number)  number = Math.abs(number); int sum = 0; while (number > 0)  sum += number % 10; number /= 10; > return sum; > > 

Источник

Сумма цифр в числе

Разработайте метод SumOfDigits, который принимает в качестве аргумента целое неотрицательное число n(0≤n≤109) и возвращает сумму его цифр.

быть членом класса NumberDigits;
иметь спецификатор доступа public;
быть статическим.
Пример:

Входные данные Выходные данные
825 15
public class NumberDigits //Write your code here

Найти числа, сумма цифр которых в возведении в степень количества цифр совпадает с этим числом
Не считая число 1, число 153 является первым числом, имеющим это свойство: сумма степеней каждого.

Перестановки цифр в числе
Здравствуйте, подскажите пожалуйста, как посчитать и вывести все перестановки цифр в числе(.

Перестановка цифр в числе
Как из числа 123 получить числа с разным расположением цифр без повторений(132, 213, 231, 312, 321)

Определить сколько цифр в числе n, чему равна сумма его цифр
Дано натуральное число n. Определить: сколько цифр в числе n, чему равна сумма его цифр.

Рекурсия: количество цифр в числе, сумма цифр и реверс числа
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит.

1 2 3 4 5 6 7 8 9 10 11 12
public class NumberDigits { public static int sumOfDigits(int x) { var result = 0; while (x > 0) { result += x % 10; x /= 10; } return result; } } assert 15 == NumberDigits.sumOfDigits(825);

java: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier

Добавлено через 6 минут
Arsegg

Источник

Читайте также:  Http festival nic snail ru index php
Оцените статью