понедельник, 14 октября 2013 г.

Для введённого пользователем с клавиатуры натурального числа посчитайте сумму всех его цифр (заранее не известно сколько цифр будет в числе).

Для введённого пользователем с клавиатуры натурального числа посчитайте сумму всех его цифр (заранее не известно сколько цифр будет в числе).

Изначально пришло на ум решение задачи при помощи цикла и деления числа по модулю пока результат такого деления не равен 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("Ошибка. Вы ввели не число!");
    }
 }

Комментариев нет:

Отправить комментарий