Objetivos
- Manejo de cadenas
- Bucles o iteraciones
- Manejo de funciones
Enunciado del problema
Se trata de implementar un programa que sume los dígitos de un número entero no negativo. Por ejemplo, la suma de los dígitos del 3433 es 13.
Para darle un poco más de emoción, el programa no se limitará a escribir el resultado de la suma, sino que también escribirá todos los sumandos utilizados: 3 + 4 + 3 + 3 = 13.
Entrada
La entrada consta de una serie de casos de prueba terminados con un número negativo. Cada caso de prueba es una simple línea con un número no negativo no mayor que 10^9 del que habrá que sumar todos sus dígitos.
Salida
Para cada caso de prueba se mostrará una línea en la que aparecerán cada uno de los dígitos separados por el signo +, tras lo cual aparecerá el símbolo = y la suma de todos los dígitos.
Ten en cuenta que antes y después de cada símbolo (+ y =) hay un espacio.
Análisis
Repasando rápidamente lo que nos piden tenemos que:
- La condición de parada para dejar de recibir números es que la entrada sea -1
- El número introducido deber ser positivo y menor que 10^9. En nuestro caso si no se cumple alguna de las condiciones simplemente vamos a ignorar el número.
Solución
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import java.util.Scanner; import java.util.ArrayList; public class SumaDigitos { /** * @param args the command line arguments */ public static void main(String[] args) { //variable ArrayList para almacenar los numeros de entrada ArrayList<String> numeros; numeros = new ArrayList<>(); //leemos la entrada de datos Scanner scanner = new Scanner(System.in); //almacenamos el valor en la variable numero String numero = scanner.next(); //mientras el número sea distinto de -1 continuar recibiendo while (! numero.equals("-1")) { //añadimos el numero a la lista numeros.add(numero); //leemos la entrada de datos nuevamente numero = scanner.next(); } //ahora recorremos la lista de números y mostramos los resultados for (int i = 0; i < numeros.size(); i++) { sumaDeNumero(numeros.get(i)); } } //funcion que suma los dígitos e imprime el resultado //si el numero es positivo y menor a 10^9 lo procesamos //si no lo ignoramos private static void sumaDeNumero(String numero) { if(Integer.parseInt(numero) > 0 && Integer.parseInt(numero) < Math.pow(10, 9)){ //variable para almacenar la suma de los digitos de cada numero int suma = 0; //variable para almacenar el resultado como una cadena //que incluye los simbolos = + String resultado = ""; //recorremos los digitos del numero for (int i = 0; i < numero.length(); i++) { //vamos sumando los digitos suma += Character.getNumericValue(numero.charAt(i)); //vamos formando la cadena de resultado //si es el último dígito añadimos el símbolo = if (i == numero.length() - 1) { resultado += numero.charAt(i) + " = "; } else{ //de lo contrario añadimos el símbolo + resultado += numero.charAt(i) + " + "; } } //añadimos el resultado de la suma a la cadena resultado += suma; //imprimos la cadena final System.out.println(resultado); } } } |
Comentarios
Publicar un comentario