orientação a objetos

3 respostas
A
Ola acompanho a comunidade algum tempo mas so agora tomei coragem pra postar :oops: . Conheço um pouquinho de programação devido a faculdade que curso, acho java uma linguagem muito interessante comecei a resolver algum exercícios com ela, resolvi um exercício que possui duas partes a primeira verifica se um numero é um numero perfeito e a segunda verifica a quantidade de números perfeitos que aparecem entre dois valores dados pelo usuário o código abaixo resolve o problema mas gostaria de saber se em java foi interessante a maneira que resolvi. Po gente pode malha o pau criticas são bem vindas, e muito obrigado pela atenção.
import java.util.Scanner;

public class NumeroPerfeito {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int n = 0;
		int soma = 0;
		int opcao = 0;
		int num1 = 0;
		int num2 = 0;
		int i = 1;
		int j = 0;
		System.out.println("Opção = 1 --- verifica se o numero é perfeito");
		System.out.println("Opção = 2 --- verifica a quantidade de numeros perfeitos entre dois valores");
	
		System.out.println();
		System.out.println("Digite a Opção Desejada");
		opcao = input.nextInt();

		switch (opcao) {

		case 1:
			System.out.println("Digite o numero a ser verificado");
			n = input.nextInt();

			for (i = 1; i < n; i++) {
				if (n % i == 0)
					soma = soma + i;
			}
			if (soma == n)
				System.out.println("O numero " + n + " é perfeito ");
			else
				System.out.println("Não é um numero perfeito");
			break;

		case 2:
			System.out.println("Digite o 1 número");
			num1 = input.nextInt();
			System.out.println("Digite o segundo número");
			num2 = input.nextInt();

			for (j = num1; j <= num2; j++) {
				for (i = 1; i < j; i++) {
					if (j % i == 0)
						soma = soma + i;
				}

				if (soma == j)
					System.out.println(+j);
				soma = 0;

			}

			break;
		}
	}

}

3 Respostas

ViniGodoy
  1. Crie uma função separada, com a assinatura:
boolean ePerfeito(int numero)

E faça essa função simplesmente retornar true se for perfeito, false se não for.
Aí vc pode usar essa função tanto no primeiro, quanto no segundo switch.

  1. Faça o seu for prosseguir se ((soma+i) < n);
    Se a soma mais ou próximo número já for maior que n, não há necessidade de prosseguir, certo?

  2. Crie as variáveis o mais próximo possível do lugar onde irá usa-las;

A

po vlw pelos toques vinigodoy vo tenta implementa-los

pedrotaek

[/code]import java.util.Scanner;

public class NumeroPerfeito {

public static void main(String[] args) {

	Scanner input = new Scanner(System.in);

	int n = 0;
	int soma = 0;
	int opcao = 0;
	int num1 = 0;
	int num2 = 0;
	int i = 1;
	int j = 0;
	System.out.println("Opção = 1 --- verifica se o numero é perfeito");
	System.out.println("Opção = 2 --- verifica a quantidade de numeros perfeitos entre dois valores");

	System.out.println();
	System.out.println("Digite a Opção Desejada");
	opcao = input.nextInt();

	switch (opcao) {

	case 1:
		System.out.println("Digite o numero a ser verificado");
		n = input.nextInt();

		for (i = 1; i < n; i++) {
			if (n % i == 0)
				soma = soma + i;
		}
		if (soma == n)
			System.out.println("O numero " + n + " é perfeito ");
		else
			System.out.println("Não é um numero perfeito");
		break;

	case 2:
		System.out.println("Digite o 1 número");
		num1 = input.nextInt();
		System.out.println("Digite o segundo número");
		num2 = input.nextInt();

		for (j = num1; j <= num2; j++) {
			for (i = 1; i < j; i++) {
				if (j % i == 0)
					soma = soma + i;
			}

			if (soma == j)
				System.out.println(+j);
			soma = 0;

		}

		break;
	}
}

}

Criado 6 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 3
Participantes 3