Посчитать сумму чисел в числе java

сумма цифр четырехзначного числа

Реализуйте метод sumDigitsInNumber(int number). Метод на вход принимает целое четырехзначное число. Нужно посчитать сумму цифр этого числа, и вернуть эту сумму. Пример: Метод sumDigitsInNumber вызывается с параметром 5467. Пример вывода: 22 Требования: 1. В методе sumDigitsInNumber не могут быть использованы никакие дополнительные классы. 2. Метод sumDigitsInNumber(int) должен быть не приватным и статическим. 3. Метод sumDigitsInNumber должен возвращать значение типа int. 4. Метод sumDigitsInNumber не должен ничего выводить на экран. 5. Метод sumDigitsInNumber должен правильно возвращать сумму всех цифр в числе number. */

public class TaskC2  public static void main(String[] args)  System.out.println(sumDigitsInNumber(5467)); > public static int sumDigitsInNumber(int number)  number = 5467; int sum = 0; int currentDigit; currentDigit = number % 10; sum = sum + currentDigit; number = number / 10; currentDigit = number % 10; sum = sum + currentDigit; number = number / 10; currentDigit = number % 10; sum = sum + currentDigit; number = number / 10; sum = sum + number; return sum; > >

Источник

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

Рекурсия, подсчитать количество цифр в заданном целом числе
Подсчитать количество цифр в заданном целом числе 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; > > 

Источник

Как суммировать цифры целого в 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); > > 

Источник

Посчитать сумму чисел в числе java

Learn Latest Tutorials

Splunk tutorial

SPSS tutorial

Swagger tutorial

T-SQL tutorial

Tumblr tutorial

React tutorial

Regex tutorial

Reinforcement learning tutorial

R Programming tutorial

RxJS tutorial

React Native tutorial

Python Design Patterns

Python Pillow tutorial

Python Turtle tutorial

Keras tutorial

Preparation

Aptitude

Logical Reasoning

Verbal Ability

Company Interview Questions

Artificial Intelligence

AWS Tutorial

Selenium tutorial

Cloud Computing

Hadoop tutorial

ReactJS Tutorial

Data Science Tutorial

Angular 7 Tutorial

Blockchain Tutorial

Git Tutorial

Machine Learning Tutorial

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures tutorial

DAA tutorial

Operating System

Computer Network tutorial

Compiler Design tutorial

Computer Organization and Architecture

Discrete Mathematics Tutorial

Ethical Hacking

Computer Graphics Tutorial

Software Engineering

html tutorial

Cyber Security tutorial

Automata Tutorial

C Language tutorial

C++ tutorial

Java tutorial

.Net Framework tutorial

Python tutorial

List of Programs

Control Systems tutorial

Data Mining Tutorial

Data Warehouse Tutorial

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • WordPress
  • Graphic Designing
  • Logo
  • Digital Marketing
  • On Page and Off Page SEO
  • PPC
  • Content Development
  • Corporate Training
  • Classroom and Online Training
  • Data Entry

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week

Like/Subscribe us for latest updates or newsletter RSS Feed Subscribe to Get Email Alerts Facebook Page Twitter Page YouTube Blog Page

Источник

Читайте также:  Php entity to large
Оцените статью