Заведём джаву. Внеурочная заметка №4. Сумма цифр трёхзначного числа.

Во внеурочных заметках я стараюсь размещать наиболее интересные решения популярных задач. В этот раз мы сосчитаем сумму цифр трехзначного числа. К примеру есть число 321 — сумма его чисел 6. Как же сказать об этом программе?

public class test3 {

    public static void main(String[] args) {
        System.out.println(sumnum(321));
    }

    public static int sumnum(int number) {
       
    }


}

Простейший класс, метод main, в котором мы выводим на экран значение, которое вернёт метод sumnum, если передать ему число 546, собственно и сам статический метод sumnum. Статический — дабы нам не создавать объект — сделаем в процедурном стиле.

Итак есть число 321, логично, что каждую цифру нужно «загнать» в массив.

[0] = 3;

[1] = 2;

[2] = 1;

То есть что-то вроде:

 

public int[] chislo = {"3", "2", "1"}; 

Ага — подумали мы. Как же сказать программе, что это у нас массив?

Во-первых можно перевести число 321  в строку 321. Для этого можно воспользоваться методом valueOf.

Позволю себе немного «копипасты».

Метод valueOf() в Java имеет следующие варианты, которые зависят от передаваемых параметров. Этот метод возвращает строковое представление переданного аргумента.

  • valueOf(boolean b): возвращает строковое представление логического аргумента.
  • valueOf(char c): возвращает строковое представление char аргумента.
  • valueOf(char[] data): возвращает строковое представление массив char аргументов.
  • valueOf(char[] data, int offset, int count): возвращает строковое представление определенного подмассива массив char аргументов.
  • valueOf(double d): возвращает строковое представление double аргумента.
  • valueOf(float f): возвращает строковое представление float аргумента.
  • valueOf(int i): возвращает строковое представление int аргумента.
  • valueOf(long l): возвращает строковое представление long аргумента.
  • valueOf(Object obj): возвращает строковое представление объекта аргумента.

Пример:


import java.io.*;

public class Test {

   public static void main(String args[]){
      double d = 102939939.939;
      boolean b = true;
      long l = 1232874;
      char[] arr = { 'а', 'б', 'в', 'г', 'д', 'е', 'ё' };

      System.out.println("Возвращаемое значение: " + String.valueOf(d));
      System.out.println("Возвращаемое значение: " + String.valueOf(b));
      System.out.println("Возвращаемое значение: " + String.valueOf(l));
      System.out.println("Возвращаемое значение: " + String.valueOf(arr));
   }
}

 

 

 

Получим следующий результат:

Возвращаемое значение: 1.02939939939E8
Возвращаемое значение: true
Возвращаемое значение: 1232874
Возвращаемое значение: абвгдеё

Взято отсюда: http://proglang.su/java/134 и вот это также рекомендую прочесть: http://proglang.su/java/67

В нашем случае будет как-то так:
System.out.println(String.valueOf(321));


После того, как мы получили строку из числа, неплохо бы её разбить на символы методом split. 

Метод split() в Java разделяет данную строку вокруг данного регулярного выражения и имеет два варианта.

Синтаксис

Синтаксис этого метода:

public String[] split(String regex, int limit)

или

public String[] split(String regex)

Параметры

Подробная информация о параметрах:

  • regex — разграничение регулярного выражения;
  • limit — порог, результатом которого означает, как много строк, должно быть возвращено.

Возвращаемое значение

  • В Java split() возвращает массив строк, вычисленных путем разделения данной строки вокруг данного регулярного выражения.

Взял отсюда: http://proglang.su/java/125

 

В качестве regexp в нашем случае будет выступать… как бы это выразиться. Ничего. Вот такие две кавычки «».

То есть наш код может выглядеть как-то так:

 

public class test3 {

int z = 321;

String[] chislo = String.valueOf(z).split("");

System.out.println(chislo[1]);

}

 

 

 

Отлично! Мы преобразовали число в строку и разбили её на символы, которые и записали в массив chislo типа String! В вышеприведённом коде мы обращаемся к элементу массива chislo с порядковым номером 1. То есть система нам выведет «2», так как элементы массива мы считаем, начиная с 0!

Но как же сосчитать общую сумму числе? Воспользуемся циклом for и методом length.

 

 int result = 0;
for (int i = 0; i < chislo.length; i++) {
 result += Integer.parseInt(chislo[i]);
   }

 

 

метод length считает количество элементов в массиве. Считает он их начиная с единицы, а не с 0!

 

Внутри у нас переменная result типа int, имеющая изначально значение 0.  Метод parseInt() в Java используется для получения примитивного типа данных определенной строки. Метод статический. На вход он принимает String. Все, кроме целых чисел, «получат» Exception. (http://proglang.su/java/69)

При каждой итерации переменная result увеличивается на значение массива chislo[i], которое теперь уже не строка, а число!

Строка

result += Integer.parseInt(chislo[i]);

аналогична строке

result = result + Integer.parseInt(chislo[i]);

В завершении наш код может выглядеть так:

public class test3 {

    public static void main(String[] args) {
        System.out.println(sumnum(321));
    }
    
    public static int sumnum(int number) {
        String [] chislo = String.valueOf(number).split("");
        int result = 0;
        for (int i = 0; i < chislo.length; i++) {
            result = result + Integer.parseInt(chislo[i]);
        }
        return result;
    }

}

На выходе получим число 6. Задачку мы решили.

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *