Tengo problemas para tratar de resolver esto. Necesito crear una aplicación que muestre los números de índice 0-101, y también almacene la suma de cada dígito de número de índice individual. por ejemplo:
Y así. El índice 17 almacenaría 25, porque 17 + 1 + 7 = 25. Tengo la lista de números de índice al día.
public class ArrayPractice { public static void main(String[] args) { int sum = 0; int[] arrayNumber = new int[102]; for(int i = 0; i < arrayNumber.length; i++){ arrayNumber[i] = i; int add = i % 10; sum += add; i /= 10; System.out.println(i); } } }También entiendo que para sacar la suma de los dígitos, hay que modular 10 y luego dividir por 10, 17 % 10 = 7, 17 / 10 = 1 7 + 1 = 8 + 17(índice) = 25.
Sigo sin poder hacer que esto funcione dentro de un ciclo. Cualquier ayuda sería muy apreciada.
También explicaré, dado que tiene números de 3 dígitos, no es suficiente dividir por 10 una vez. Tienes que hacerlo hasta que sea mayor que 0, así que para 100, obtienes 0, 0, 1. Por eso es mejor un bucle while, ya que no sabes cuándo terminará. Esto funciona para cualquier número entero.
Solo recuerde, los bucles for están destinados a usarse cuando sabe cuándo debe terminar su bucle. Si bien el bucle se usa cuando no sabe cuándo terminará, bueno, sabe cuándo, pero no cuándo sucederá.
EDITAR: Acabo de ver que tienes que agregar el índice en sí, 17 = 1 + 7 + 17. Se corrigió eso.
int current; int[] array = new int[102]; int sum; for(int i = 0; i < array.length; i++){ current = i; sum = 0; while(current != 0){ sum += current % 10; current = current/10; } array[i] = sum+i; } for(int i = 0; i < array.length; i++){ System.out.println("Index " + i + " :" + array[i]); }El problema con su código es que solo resume el último dígito del número, no funcionará para números que tienen dígitos mayores que 2 , debe recorrer todos los dígitos y seguir agregándolos al número.
for(int i = 0; i < arrayNumber.length; i++) { arrayNumber[i] = i; int tmp = arrayNumber[i]; // summing up digits while(tmp > 0) { arrayNumber[i] += tmp%10; //extracting right-most digit tmp /= 10; // removing the right-most digit } System.out.println(i , arrayNumber[i]); }Creo que está bastante cerca, pero lo más probable es que desee usar otra variable ( i no sea su iterador) para modificar; de lo contrario, su iterador se verá afectado continuamente. También querrá continuar haciendo la operación de modificación/división hasta que su número inicial sea 0 (es decir, haya procesado todos los dígitos). También querrá restablecer su suma para cada paso a través del bucle for.
Aquí está mi código de ejemplo:
int[] arrayNumber = new int[102]; for (int i = 0; i < arrayNumber.length; i++) { int sum = i; int startingNumber = i; while (startingNumber > 0) { sum += startingNumber%10; startingNumber /= 10; } arrayNumber[i] = sum; System.out.println(i + " " + sum); }