сумма цифр четырехзначного числа
Реализуйте метод 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); } }
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"); } } }
Сообщение от easybudda
оригинальный способ, я обычно в строку и ее длину 🙂
turbanoff, а как Вы себе это число представляете положительным 32-битным целым? Да и выпендрёжные варианты исключительно для выпендрёжа, а не чтобы во всех маргинальных случаях работали.
Сообщение от easybudda
А зачем это делать? Вы же считаете только количество цифр, вам не нужно его «представлять» в каком-либо другом виде.
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
Preparation
Trending Technologies
B.Tech / MCA
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