"Missing return statement"

9 respostas
L

Então gente, to tentando fazer um código para determinar se um numero é primo, no entanto, está dando o erro que pede o return.
Não sei o que botar no return ou o que mudar no código, me ajudem por favorrrr!

public class Exercicio3 {
        public static void main (String[] args){
                System.out.println(ehPrimo(10));
        }

                public static boolean ehPrimo(int numero){
                        if (numero/2==1){
                        return true;
                        }

                        int limite = (int) Math.sqrt(numero);

                        for (int i = 3; i<limite; i+=2){
                                if (numero % i == 0) {
                                return false;
                                }
                        }
                }

}

9 Respostas

pmlm

Se, por exemplo, invocares o teu método passando 5, o que é que ele vai devolver?

L

Não consigo nem executar o método, ele da erro de compilação.

pmlm

Eu sei. Eu estou a dizer para fazeres um teste de mesa. Simular a execução passo a passo, ver o que é que aconteceria.

L

Tens razão… está errado…

Mas de que maneira posso resolver isso no método?

douglaskd

1 regra: você tem que ter pelo menos 1 dos returns fora de fors/ifs/whiles etc...
2 regra: você pode usar 1 return dentro do if e outro dentro do else.

o que você pode fazer....

coloque um return false bem aqui:

public static boolean ehPrimo(int numero){   
                        if (numero/2==1){   
                        return true;   
                        }   
  
                        int limite = (int) Math.sqrt(numero);   
  
                        for (int i = 3; i<limite; i+=2){   
                                if (numero % i == 0) {   
                                return false;   
                                }   
                        }   
//aqui -> return false;
                }

ja te adianto que há melhores maneiras de resolver o problema de numeros primos, depois de uma pesquisada...

pmlm

No comentário deve ser return true

E

Esse método (divisões sucessivas até a raiz quadrada do número) não é tão ruinzinho assim quanto parece - há alguns métodos que só são melhores se você:

a) Já tiver uma tabela grande de primos, ou

b) Quiser calcular uma tabela grande de primos.

Se for necessário calcular uma tabela grande de primos, achar se cada número é primo é muito lento; melhor usar um método de peneira (crivo).

L

Tentei mudar do jeito que vocês falaram mas ainda continua dando errado… não sei mais o que fazer.

Se eu botar return true no final, tudo dara true; se eu botar return false tudo dará falso.

L

Acabo de conseguir, ficou assim o código:

//ver se um numero é primo
public class Exercicio3 {
		public static void main (String[] args){
			System.out.println(ehPrimo(25));
        }

               public static boolean ehPrimo(int numero){
               		if (numero == 0 || numero == 1){
               			return false;
               		}else {
               			for (int i =2; i<numero; i++){
               				if(numero%i == 0){
               				return false;
               				}
               			}
               		}
               		return true;
               }
}

Obrigado a todos que ajudaram!

Criado 6 de junho de 2012
Ultima resposta 6 de jun. de 2012
Respostas 9
Participantes 4