Erro - Equação Segundo Grau (Exception in thread

3 respostas
U

Olá galera estou conseguindo executar o aplicativo, porém quando vai exebir o resultado da o seguinte erro:

Erro:

O valor do delta é negativo: Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4011) at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2725) at java.util.Formatter$FormatSpecifier.print(Formatter.java:2677) at java.util.Formatter.format(Formatter.java:2449) at java.io.PrintStream.format(PrintStream.java:937) at java.io.PrintStream.printf(PrintStream.java:838) at EquacaoSegundoGrau.main(EquacaoSegundoGrau.java:34)

Segue o Código:


/* Programa .Java 
criado por Raphael Santana Carvalho */

import java.util.Scanner; // classe Scanner

public class EquacaoSegundoGrau
{
// metodo inicial
public static void main(String args[])
{
Scanner input = new Scanner( System.in );

double a; 
double b;
double c; 
double delta; // resultado
double x1;
double x2;

System.out.print("Digite o valor de \"A\":"); 
a = input.nextDouble(); // lê o primeiro valor

System.out.print("Digite o valor de \"B\":"); 
b = input.nextDouble(); // lê o segundo valor

System.out.print("Digite o valor de \"C\":"); 
c = input.nextDouble(); // lê o terceiro valor

delta = (b * b) - 4 * (a * c); // resultado

if (delta < 0) 
{
System.out.printf("O valor do delta é negativo: %d\n%s\n", delta , "A equação não possui solução."); 
}

else 
{ 
x1 = (-b + Math.sqrt (delta)) / (2*a);
x2 = (-b - Math.sqrt (delta)) / (2*a); 

System.out.printf("O valor do delta é: %d\n%s\n", delta , "A equação possui solução."); 
System.out.printf("\n O valor do X1 é: %d\n", x1); 
System.out.printf("\n O valor do X2 é: %d\n", x2); // fim da condição
}


} // fim do metodo inicial
} // fim da classe EquacaoSegundoGrau

3 Respostas

andeb

%d serve para números inteiros, tente o %f. Se quiser formatar melhor a saída, procure no (completíssimo) Javadoc da classe java.util.Formatter.

paulo1911

Olá amigo,

Exatamente como o migo acime citou…troque o %d(inteiro) por %f.(floats e doubles) pra vc especificar a quantidade de casas decimais faça %f.2(2 casas decimais ou n para n casas decimais).

Fallow

U

Arrumei, declarei a variavel delta como Int, pois Delta tem que apresentar um valor inteiro! apenas no x1 e x2 alterei para %f.

Segue como ficou:
/* Programa .Java 
criado por Raphael Santana Carvalho */

import java.util.Scanner; // classe Scanner

public class EquacaoSegundoGrau
{
	// metodo inicial
	public static void main(String args[])
	{
		Scanner input = new Scanner( System.in );

		int a; 
		int b;
		int c; 
                int delta; // resultado
		double x1;
		double x2;
                                
		System.out.print("Digite o valor de \"A\":"); 
		a = input.nextInt(); // lê o primeiro valor

                System.out.print("Digite o valor de \"B\":"); 
                b = input.nextInt(); // lê o segundo valor

                System.out.print("Digite o valor de \"C\":"); 
                c = input.nextInt(); // lê o terceiro valor

                delta = (b * b) - 4 * (a * c); // resultado
                 
                if (delta < 0)		
		{
			System.out.printf("- O valor do delta é negativo: %d\n%s\n", delta , "- A equação não possui solução.");	
		}
		                
		else	
		{	
			x1 = (-b + Math.sqrt (delta)) / (2*a);
                	x2 = (-b - Math.sqrt (delta)) / (2*a); 
	
               		System.out.printf("- O valor do delta é: %d\n%s\n", delta , "- A equação possui solução."); 
               		System.out.printf("\n- O valor do X1 é: %f\n", x1); 
               	        System.out.printf("\n- O valor do X2 é: %f\n", x2); // fim da condição
		}
			
	} // fim do metodo inicial
} // fim da classe EquacaoSegundoGrau
Criado 7 de janeiro de 2011
Ultima resposta 7 de jan. de 2011
Respostas 3
Participantes 3