Для введённого пользователем с клавиатуры натурального числа посчитайте сумму всех его цифр (заранее не известно сколько цифр будет в числе).
Изначально пришло на ум решение задачи при помощи цикла и деления числа по модулю пока результат такого деления не равен 0
import java.util.Scanner;
public class Zadachi{
public static void main(String[] args){
int a,c=0;
Scanner scn=new Scanner(System.in);
if(scn.hasNextInt()){
a=scn.nextInt();
while(a!=0){
c=c+a%10;
a/=10;
}
System.out.println("Сумма всех чисел введенного числа равна "+c);
}
else System.out.println("Ошибка. Вы ввели не число!");
}
}
Потом решим попробовать решить задачу при помощи преобразования строки в символы и подсчета их суммы, не зря же я проходил раздел преобразования и раздел работы со строками. Однако сразу моих знаний не хватило, чтобы преобразовать числовой символ char в аналогичное число типа int. Пришлось изголяться...
Потом покопавшись в интернете и документации решение нашлось
import java.util.Scanner;
public class Zadachi{
public static void main(String[] args){
String a;
Scanner scn=new Scanner(System.in);
System.out.println("Введите число: ");
if(scn.hasNextInt()){
//В переменную типа String занесем значения числа пользователя
a=scn.nextLine();
//Созданим переменную c, в которой будем хранить сумму чисел заданного числа
int c=0;
//Создадим цикл, который будет по очереи складывать значения всех символов заданного числа
for(int i=0;i<a.length();i++){
char m=a.charAt(i);
//Проблема заключается в том, что вместо самого значения символа при математических действиях приходилось иметь дело с его числовым кодом, который на 48 больше самого числа, поэтому пришлось идти на хитрость
c=(a.charAt(i)-48)+c;
//Углубившись в проблему я нашел более правильный способ решения вопроса
//c=Character.getNumericValue(a.charAt(i))+c;
}
System.out.println("Сумма всех чисел введенного числа равна "+c);
}
else System.out.println("Ошибка. Вы ввели не число!");
}
}
Комментариев нет:
Отправить комментарий