Diferentes parâmetros nas Funções em Java

8 respostas
C

Gente, me ajudem com esse problema com funções. A variável r já tem uma atribuição, mas o programa pede pra inicializar a variável r toda vez. Eu tentei de td mas até agora sem sucesso.!

segue imagem pq não sei usar BBCode(novato)

8 Respostas

L

Variáveis locais não são inicializadas por default em Java. Existe a possibilidade do while não ser executado e r ficar sem valor. Por isso o compilador reclama. Para resolver, basta inicializar a variável:

double r = 0.0;
T

Para que exatamente esse while no método raiz? Você quis usar um if, não?

Se você não atribuir um valor à r e passar um valor menor que zero para o método, o valor de r ficará indefinido. Você precisa fazer algo como:

public static double raiz(double a){
		double r = -1;
		while (a > 0){
			r = Math.sqrt(a);
		}
 
		return r;
	}

PS: para usar a tag code, cole o código aqui e use o botão Texto Pré-Formatado (< / > ).

Abraço.

C

Mesmo eu atribuindo valor ás variáveis locais do método, o programa dá erro na execução

L

Existe a possibilidade do while não ser executado e r acabar sem valor. O que acontece se você chamar raiz(0)?

C

É só um programinha pra calcular raiz quadrada, mas eu não quis fazer tudo no main

C
Eu atribui o seguinte:

public static double raiz(double a){ // Função para retornar a raiz quadrada

double r;

while(a > 0){

r = Math.sqrt(a);
} 
            return r = 0;
L

Não cara. Você precisa atribuir um valor na declaração da variável. Desse jeito que você fez, vai sempre retornar 0, porque uma operação de atribuição em Java retorna o valor atribuído. Em outras palavras, (r = 0) == 0. Faz o que o @TerraSkilll falou.

T

Nenhum problema criar um método pra isso. Ainda assim, você não precisa desse while. Você não precisa repetir Math.sqrt. Uma única verificação é suficiente, por isso sugeri o if:

public static double raiz(double a){
		double r = 0;

                if ( a > 0){
			r = Math.sqrt(a);
		}
 
		return r;
	}

Note que, se a for menor ou igual a zero, a raiz não é calculada, mas isso não é dito para quem chama a função. Para complementar seu programa, esse método poderia exibir uma mensagem ou causar uma exceção específica quando a for igual a zero e outra exceção quando a for menor que zero.

Abraço.

Criado 5 de janeiro de 2019
Ultima resposta 5 de jan. de 2019
Respostas 8
Participantes 3