Trabalhando com Módulos (% = resto da divisão)

Prezados.

Podem me dar uma dica de como posso, enquanto um numero for divisivel por 10, ir decompondo o mesmo e somando o resto da divisão, ou seja:
123 dividido por 10 tem como resultado 12 onde sobram 3;
12 dividido por 10 tem como resultado 1 onde sobra 2;
2 dividido por 10 tem como resultado 0 onde sobra 1.

Neste exemplo utilizando o valor 123 e somando o resto de todas as divisões feitas teriamos o numero 6.

A minha duvida é :

Como faço para guardar e somar o resto da divisão para depois imprimir a soma.

Vejam parte do código onde tento resolver o exercicio:

public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int cont = 0, soma = 0;
System.out.println(“DIGITE UM NUMERO”);
int numero = s.nextInt();

    while (numero >= 10) {
        soma = numero % 10;
    }
    System.out.println(soma);
}

}

no seu while vc sempre atribui o resto da divisão em soma, basta atribuir somando, ja qe vc inicializou a soma com zero:

soma += numero % 10; 

Oi Alexander, bem-vindo ao GUJ.

Na próxima, quando for postar código, por favor, siga essas dicas:
http://www.guj.com.br/posts/list/50115.java

Fica bem mais fácil de ler. :slight_smile:

vai acumulando dentro do loop e atualizando o valor de numero…

[code] public static void main(String[] a) throws Exception {

	Scanner s = new Scanner(System.in);
	int  soma = 0;
	System.out.println("DIGITE UM NUMERO");
	int numero = s.nextInt();

	while (numero >= 10) {
		soma += numero % 10; //acumula somador
		numero /= 10; //atualiza numero
	}
	System.out.println(soma);
}[/code]

[code]
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int cont = 0, soma = 0;
System.out.println(“DIGITE UM NUMERO”);
int numero = s.nextInt();

    while (numero != 0) { //vamos dividir até o numero ser 0
               soma = soma + numero %10;      //soma o ultimo numero
               numero = numero /10;        //retira o último número

    }
    System.out.println(soma);
}

}[/code]

Para o 123 tens:

123 diferente de 0, entra no while
soma = 3 (ultimo numero de 123)
numero = 12 (123 / 10)

12 diferente de 0, entra no while
soma = 3 + 2 (ultimo numero de 12)
numero = 1 (12 / 10)

1 diferente de 0, entra no while
soma = 5 + 1
numero = 0 (1 / 10)

0 = 0, não entra no while

Senhores,

Agradeço pelas respostas… mais algo não esta funcionando como deveria.

A compilação parece ser eterna.

Não apresenta nenhum tipo de resultado.

Posta seu código final aqui.


package estudandojava;

import java.util.Scanner;

/**
 *
 * @author Alexander
 */
public class Exercicio02Pag82 {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int cont = 0, soma = 0;
        System.out.println("DIGITE UM NUMERO");
        int numero = s.nextInt();

        while (numero != 10) { // enquanto numero for diferente de zero
            soma = soma + numero % 10;// faz a divisão e guarda o resto na variavel soma
            numero /=10; // atualiza o numero para a nova divisão
        }
        System.out.println(soma);
    }
}


while (numero != 10) { // enquanto numero for diferente de zero  

Não é 10, é 0 como diz o comentário.

Verdade.
Muito obrigado e perdoe a minha falta de atenção.

Abç.