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

9 respostas
A

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);
}

}

9 Respostas

xandevieira

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;
ViniGodoy

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:

renamed
vai acumulando dentro do loop e atualizando o valor de numero...
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);
	}
pmlm
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);
    }
}

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

A

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.

ViniGodoy

Posta seu código final aqui.

A
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);
    }
}
pmlm
while (numero != 10) { // enquanto numero for diferente de zero

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

A

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

Abç.

Criado 17 de novembro de 2009
Ultima resposta 17 de nov. de 2009
Respostas 9
Participantes 5