Número perfeito

2 respostas
F

Olá! Pessoal.
Estou com um problema em um exercício. Ele faz o primeiro loop certo, depois nao consigo apresentar os resultados novamente. código está abaixo

public class DivisoresPerfeitos {
    public static void main (String [] args){
        String n;
        int v = 1, i = 1;
        float d = 0;
                            
       while (v != 0){
           n = JOptionPane.showInputDialog("Digite um número inteiro: " );
           v = Integer.parseInt(n);
           d = (v / i);      
        while( i < v){ 
                              
          if (d % i == 0){
              System.out.println (i);
                   i++; 
                    continue;
               
                } else {
              i++;
              continue;
           }
               
       }continue; 
        
    }
}
}

Gostari de saber se o que eu fiz está certo, pois estou iniciando na programacao.

2 Respostas

positivo

Até q as vezes mostra o 2ª resultado, se o 2ª resultado for maior q o primeiro .e mostra o 3ª tbm se ele for maior q o 2ª.

L

O problema aí é você ter variáveis que são inicializada uma vez só, mas devem ser refeitas a cada iteração. Também não use "continue" tanto assim. Você só usa quando quer pular o resto de um loop...

import javax.swing.JOptionPane;

public class DivisoresPerfeitos {
	public static void main(String[] args) {
		while (true) { // pergunta até apertar cancelar
			String n = JOptionPane
					.showInputDialog("Digite um número inteiro: ");
			if (n == null) { // apertou cancelar
				break;
			}
			int v = Integer.parseInt(n);
			for (int i = 1; i <= v/2; i++) {
				if (v % i == 0) {
					System.out.println(i);
				}
			}
		}
	}
}

Mas isso não diz se é um número perfeito...

Criado 24 de maio de 2011
Ultima resposta 25 de mai. de 2011
Respostas 2
Participantes 3