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)
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)
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;
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.
Mesmo eu atribuindo valor ás variáveis locais do método, o programa dá erro na execução
Existe a possibilidade do while não ser executado e r acabar sem valor. O que acontece se você chamar raiz(0)?
É só um programinha pra calcular raiz quadrada, mas eu não quis fazer tudo no main
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;
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.
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.