Java Как сложить два числа
Узнайте, как сложить два числа с помощью пользовательского ввода:
Пример
import java.util.Scanner; // Import the Scanner class class MyClass < public static void main(String[] args) < int x, y, sum; Scanner myObj = new Scanner(System.in); // Create a Scanner object System.out.println("Type a number:"); x = myObj.nextInt(); // Read user input System.out.println("Type another number:"); y = myObj.nextInt(); // Read user input sum = x + y; // Calculate the sum of x + y System.out.println("Sum is: " + sum); // Print the sum >>
Как складывать два числа в java
Сложить два числа в Java можно при помощи оператора сложения + :
var a = 10; var b = 7; var sum1 = a + b; // 17 var sum2 = 20 + b; // 27
Основы Java за 14 дней
62 урока в онлайн-тренажере
4 живых вебинара и масскодинг
Помощь наставника на весь период обучения
Есть что добавить? Зарегистрируйтесь
Курсы по программированию в Хекслете
Backend-разработка
Разработка серверной части сайтов и веб-приложений
Frontend-разработка
Разработка внешнего интерфейса сайтов и веб-приложений и верстка
Создание сайтов
Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails
Тестирование
Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP
Аналитика данных
Сбор, анализ и интерпретация данных на Python
Интенсивные курсы
Интенсивное обучение для продолжающих
DevOps
Автоматизация настройки локального окружения и серверов, развертывания и деплоя
Веб-разработка
Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков
Математика для программистов
Обучение разделам математики, которые будут полезны при изучении программирования
JavaScript
Разработка сайтов и веб-приложений и автоматизированное тестирование на JS
Python
Веб-разработка, автоматическое тестирование и аналитика данных на Python
Java
Веб-разработка и автоматическое тестирование на Java
PHP
Веб-разработка и автоматическое тестирование на PHP
Ruby
Разработка сайтов и веб-приложений на Ruby on Rails
Go
Курсы по веб-разработке на языке Go
HTML
Современная верстка с помощью HTML и CSS
SQL
Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД
Git
Система управления версиями Git, регулярные выражения и основы командой строки
Похожие вопросы
23 ноября 2021
23 ноября 2021
23 ноября 2021
23 ноября 2021
- 8 800 100 22 47 бесплатно по РФ
- +7 495 085 28 38 бесплатно по Москве
Направления
- Курсы «Backend-разработка»
- Курсы «Frontend-разработка»
- Курсы «Создание сайтов»
- Курсы «Тестирование»
- Курсы «Аналитика данных»
- Интенсивные курсы
- Курсы DevOps
- Курсы «Веб-разработка»
- Курсы «Математика для программистов»
- Все курсы
О Хекслете
- О нас
- Карьера в Хекслете
- Хекслет Колледж
ООО «Хекслет Рус» 108813, г. Москва, вн.тер.г. поселение Московский, г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 10/3 ОГРН 1217300010476
- Справка
- Вопросы и ответы
- Сообщество
- Дополнительно
- Условия использования
- Соглашение об обработке ПД
- Оферта
- Акции
Как сложить цифры целого числа в Java?
Мне сложно определить решение этой проблемы. Я пытаюсь разработать программу на Java, которая принимает число, например 321, и находит сумму цифр, в этом случае 3 + 2 + 1 = 6. Мне нужны все цифры любого трехзначного числа, чтобы добавить их вместе, и сохраните это значение, используя символ% остатка. Это меня сбивало с толку, и я был бы признателен за любые идеи.
Shane Larsen 24 нояб. 2014, в 03:03
Поделиться
Вы пытаетесь вычислить цифровой корень любого трехзначного числа? Если да, то какая часть доставляет вам неприятности?
Matt Coubrough 24 нояб. 2014, в 01:40
Ну, я просто пытаюсь взять любое число, например 480, и сделать его равным всем его цифрам (4, 8, 1), чтобы сложить их, используя символ%. Мне нужно создать цикл в Java, который может сделать это.
Shane Larsen 24 нояб. 2014, в 01:41
нужно закончить этот код: Public static void main (String [] args)
Shane Larsen 24 нояб. 2014, в 01:42
Возможный дубликат Как получить отдельные цифры целого числа?
AdamMc331 24 нояб. 2014, в 01:43
@ShaneLarsen посмотри на ответ
Ankur Singhal 24 нояб. 2014, в 01:43
Кажется, что у вас уже есть число в виде целого числа — я предположил, что ваш ввод был строкой — (иначе я не совсем понимаю, какая часть этой по существу математической проблемы вызывает у вас проблемы)
Matt Coubrough 24 нояб. 2014, в 01:50
Показать ещё 4 комментария
Поделиться:
17 ответов
Лучший ответ
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); >
Выход
Ankur Singhal 24 нояб. 2014, в 03:38
Поделиться
это не работает в моем компиляторе, как это.
Shane Larsen 24 нояб. 2014, в 01:52
я получаю ошибку перечисления класса
Shane Larsen 24 нояб. 2014, в 01:53
Это не работает, он получает ошибки.
Shane Larsen 24 нояб. 2014, в 01:59
Это работает. Ожидаемый класс @ShaneLarsen, интерфейс или перечисление обычно означает отсутствие фигурной скобки.
Michael Queue 24 нояб. 2014, в 02:02
Это, наверное, ОП просит сделать домашнее задание, и даже не поместил основную функцию в класс.
Martin Konecny 24 нояб. 2014, в 02:08
на самом деле я сделал это в классе.
Shane Larsen 24 нояб. 2014, в 02:21
Показать ещё 4 комментария
Рекурсии всегда быстрее, чем циклы!
Самый короткий и лучший:
public static long sumDigits(long i) < return i == 0 ? 0 : i % 10 + sumDigits(i / 10); >
nicoosokhan 18 окт. 2016, в 23:29
Поделиться
Вы действительно уверены, что они всегда быстрее? Или просто короче?
Moira 19 март 2017, в 11:19
Если вам нужно постоянное время, проверьте мой ответ.
Vishrant 12 нояб. 2017, в 19:39
Рекурсии всегда быстрее ахахахаха, это была хорошая шутка!
firephil 30 март 2019, в 02:49
Показать ещё 1 комментарий
Вы можете сделать это, используя 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
SM ANSARI 24 сен. 2016, в 08:35
Поделиться
Если вы любите постоянное время, попробуйте это:
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).
В случае десятичной точки удалите его и добавьте итоговые цифры.
Ниже код выполняет трюк:
i % 9 == 0 ? 9 : i % 9
Vishrant 20 авг. 2017, в 09:56
Поделиться
Это не ответ на вопрос, потому что это решение суммирует рекурсивно, например: 456 -> 4+5+6 = 15 -> 1+5 = 6 , а не 456 -> 4+5+6 = 15 Но оно подходит мой случай, так что +1 🙂
fightlight 11 июль 2018, в 09:15
Суммирует все цифры независимо от размера номера.
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; >
GuessWho 28 янв. 2019, в 00:23
Поделиться
public int sum(int number) < return (number + "").chars() .map(digit ->digit % 48) .sum(); >
Преобразует число в строку, а затем каждый символ сопоставляется с его цифровым значением, вычитая значение ascii ‘0’ (48) и добавляя к окончательной сумме.
Sameer 16 нояб. 2017, в 06:49
Поделиться
Простое решение с использованием потоков:
int n = 321; int sum = String.valueOf(n) .chars() .map(Character::getNumericValue) .sum();
shmosel 17 авг. 2017, в 21:05
Поделиться
В дополнение к ответам здесь я могу немного объяснить. Это на самом деле математическая проблема.
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); > >
Ad Infinitum 06 март 2017, в 12:44
Поделиться
Разве вы не можете сделать это рекурсивно что-то вроде этого? Я немного новичок в программировании, но я проследил это, и я думаю, что это работает.
int sum(int n) < return n%10 + sum(n/10); >
Chris Johnson 26 май 2016, в 01:52
Поделиться
Я бы добавил где-нибудь проверку if, потому что в настоящее время sum будет бесконечно вызывать себя, вызывая ошибку хоста этого сайта;) ( StackOverflowError ). Что-то вроде int sum(int n) < if(n >9) < return n%10 + sum(n/10); >return n;>
Kevin Cruijssen 06 сен. 2016, в 14:23
Это должно работать нормально для любого количества цифр, и оно будет возвращать отдельную цифру суммы
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 >
Ridham Tarpara 21 апр. 2016, в 18:43
Поделиться
Может быть немного поздно.. но вот как вы можете это сделать рекурсивно
public int sumAllDigits(int number) < int sum = number % 10; if(number/10 < 10)< return sum + number/10; >else < return sum + sumAllDigits(number/10); >
user1139428 29 март 2016, в 15:40
Поделиться
Возможно, слишком поздно, но я вижу, что многие решения, размещенные здесь, используют сложность времени 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, и мы избегали одного дополнительного цикла. Надеюсь, это поможет.
Сумма цифр натурального числа
Ну смотри ты же в цикле прибавляешь последнюю цифру, но с самим то числом ничего не происходит. То есть ты добавляешь одну и ту же цифру.
19 авг 2017 в 9:57
9 ответов 9
Сортировка: Сброс на вариант по умолчанию
вроде как, должно быть так:
while(n != 0) < //Суммирование цифр числа sum += (n % 10); n/=10; >System.out.println(sum + " ");
Отслеживать
ответ дан 30 сен 2011 в 8:31
Sergii Kozlov Sergii Kozlov
2,468 16 16 серебряных знаков 13 13 бронзовых знаков
30 сен 2011 в 8:34
через for тоже можно, они взаимозаменяемы с while:
for(n = sr.nextInt(); n != 0; n /= 10) < sum += (n % 10); >System.out.println(sum + " ");
Отслеживать
ответ дан 30 сен 2011 в 9:22
Valeriy Karchov Valeriy Karchov
736 4 4 серебряных знака 9 9 бронзовых знаков
Спасибо за ответ @Valeriy Karchov
30 сен 2011 в 9:25
Подскажите как еще можно подсчитать количество цифр в числе?
30 сен 2011 в 9:26
Крутой вариант! Добавлю тогда еще) while((n/=10) != 0) sum = sum + (n % 10); System.out.println(sum + » «);
30 сен 2011 в 9:33
тогда do sum = sum + (n % 10); while((n/=10) != 0); иначе теряется самая правая цифра
30 сен 2011 в 9:37
30 сен 2011 в 9:38
У вас цикл не выполняется ни разу, т.к. n изначально не равно 0.
Поставьте знак != и все должно заработать. И в цикле добавить строчку n /= 10 .
Отслеживать
ответ дан 30 сен 2011 в 8:32
21 2 2 бронзовых знака
нельзя задачу решать «в лоб». считать число а потом выполнять кучу операций деления это не лучший вариант, когда у вас есть возможность обработать каждый символ отдельно
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 mt24">)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться)" title="">Улучшить ответответ дан 30 сен 2011 в 21:38 jmujmu6,25216 серебряных знаков21 бронзовый знак