Dúvida (erro "NaN" no código Java)

4 respostas Resolvido
java
D

Boa tarde, pessoal! Eu estou resolvendo um exercício utilizando a linguagem Java, e estou com uma dúvida. A lógica que criei parece funcional, mas quando vou executar ele, aparece a palavra “NaN” ao invés de aparecer valores e números. Quem souber a respeito do problema, me ajuda por favor? Muito obrigado pela ajuda! Segue o exercício e a lógica que utilizei.

*Detalhe: Eu não utilizei no código o uso da condicional “se” pelo fato de o exercício ser simples mesmo e no primeiro momento, o professor não pedi-lo como meio de verificação.

Exercício)_ Receba os coeficientes A, B e C de uma equação do 2º grau (AX² + BX + C = 0). Calcule e mostre as raízes reais (considerar que a equação possuí 2 raízes).

Lógica:

package algoritmos_Satoshi;

import javax.swing.JOptionPane;

public class Ex_05 {

public static void main(String[] args) {

double A = 0, B = 0, C = 0, delta = 0, x1 = 0, x2 = 0;
A = Double.parseDouble(JOptionPane.showInputDialog("Insira o valor do coeficiente A, sendo maior que zero: "));

	B = Double.parseDouble(JOptionPane.showInputDialog("Insira o valor do coeficiente B: "));

	C = Double.parseDouble(JOptionPane.showInputDialog("Insira o valor do coeficiente C: "));

	delta = (B * B) - (4 * A * C);

	x1 = (-B + Math.pow(delta, 0.5)) / 2 * A;

	x2 = (-B - Math.pow(delta, 0.5)) / 2 * A;

	JOptionPane.showMessageDialog(null, "Os valores das raízes reais são, respectivamente: " + "\n\n" + "X' = " + x1
			+ ";" + "\n" + "X'' = " + x2 + ".");
}

}

4 Respostas

P

NaN pode significar que vc fez a divisão por zero.

Imprima os coeficientes lidos e veja se A faz sentido

R
Solucao aceita

Por acaso é a bhaskara que quer resolver?
NaN -> Not a Number, costuma ocorrer quando vc tenta realizar uma operação inválida na matemática, como raiz quadrada de algum valor negativo.
A proposito, em que parte vc está fazendo a raiz, se é a equação da bhaskara?
Inclusive vc tem várias inconsistências na equação, como (-B + Math.pow(delta, 0.5)) / 2 * A
onde primeiro será dividido por 2 e depois multiplicado por A.
É ESSENCIAL SE LIGAR NA PRECEDÊNCIA DAS OPERAÇÕES

D

Boa, irmão. Nem reparei isso. Vou arrumar agora.

P

boa!

eu tinha pensando na divisão por zero, mas em geral isso gera uma exception.

java não tem suporte padrão para numeros complexos. logo a raiz de um numero negativo não esta definida no conjunto dos numeros reais e rola um NaN.

Criado 15 de outubro de 2018
Ultima resposta 16 de out. de 2018
Respostas 4
Participantes 3