Cansado de Fazer o Calculo do baskara?

09/04/2009

Aew gente.. blz? Meu nome é victor , to entrando pra comunidade Java pq sempre me interessei por computaçao desde criança , pretendo fazer Engenharia da Computaçao .. estou no 1 ano colegial .. ai decidi fazer um programinha besta so pra começar.. ^^ espero q vcs gostem.. Esse programa resolve o baskara .. dando o X1 e o X2 como respostas ^^
/* Programa criado por Victor Casé 
 * Todos os direitos reservados 1990-2006
 */
 
 // Importa a Extenção Swing
import javax.swing.* ;

 public class Baskara {
 	//Inicializaçao das variaveis
 	public static void main ( String args [] )
 	{
 		String varA,
 		varB,
 		varC;
 		double numberA,
 		numberB,
 		numberC,
 		delta,
 		x1,
 		x2;
    
 		varA =
 		JOptionPane.showInputDialog ("Digite o A da questão");
 		
 		varB =
 		JOptionPane.showInputDialog ("Digite o B da questão");
 		
 		varC =
 		JOptionPane.showInputDialog ("Digite o C da questão");
 		
 		numberA = Integer.parseInt (varA);
 		numberB = Integer.parseInt (varB);
 		numberC = Integer.parseInt (varC);
 		
 		// Faz os calculos necessarios
 		
 		delta = (numberB*numberB)-4*(numberA)*(numberC);
 		
 		x1 = -numberB + Math.sqrt(delta) / 2*numberA;
 		x2 = -numberB - Math.sqrt(delta) / 2*numberA;
 		
 		// Mostra os Resultados obtidos
 		
 		JOptionPane.showMessageDialog ( null ,
 		"O x1 da questão será " + x1 , " Resultado ",
 		JOptionPane.PLAIN_MESSAGE);
 		
 		JOptionPane.showMessageDialog ( null ,
 		"O x2 da questão será " + x2 , " Resultado ",
 		JOptionPane.PLAIN_MESSAGE);
 		
 		System.exit(0);
 	}
 }

Victor Casé

Respostas

09/04/2009

Victor Muniz

gostei do topico
Responder Citar

12/11/2009

Diogosouzac Currículo

Cara, vc ta no primeiro ano do ensino medio?? se for, tu já ta bem adiantado... Investe na carreira!! ah, o programa tbm ficou legal!!
Responder Citar

12/11/2009

Ricardo Staroski

Parabéns pela iniciativa em aprender Java. Como incentivo, vou postar uma versão orientada a objetos do seu exemplo. Estude, analise e pratique. Boa sorte!
public final class Baskara {

	public final double X1;
	public final double X2;

	public Baskara(double a, double b, double c) {
		double delta = (b * b) - (4 * a * c);
		X1 = (-b + Math.sqrt(delta)) / (2 * a);
		X2 = (-b - Math.sqrt(delta)) / (2 * a);
	}
}
import javax.swing.*;

public class TesteBaskara {

	public static void main(String args[]) {

		double a = Double.parseDouble(JOptionPane.showInputDialog("Digite o A da questão"));
		double b = Double.parseDouble(JOptionPane.showInputDialog("Digite o B da questão"));
		double c = Double.parseDouble(JOptionPane.showInputDialog("Digite o C da questão"));

		Baskara baskara = new Baskara(a, b, c);

		JOptionPane.showMessageDialog(null,
		                              "O x1 da questão será " + baskara.X1 + "\n"
		                            + "O x2 da questão será " + baskara.X2,
		                              " Resultado ",
		                              JOptionPane.PLAIN_MESSAGE);
		System.exit(0);
	}
}
Responder Citar

12/11/2009

Alison Souza

Isso foi um incentivo ou tu quiz assustar o garoto? hehehe Att, Alison
Responder Citar

12/11/2009

Alison Souza

Só uma correção, no lugar de final coloca static :)
Responder Citar

12/11/2009

Diogosouzac Currículo

As variaveis x1 e x2 tbm poderiam ser private (adicionando os respectivos getters e setters) para deixar o codigo mais seguro, mas como é umma aplicaçao pequena nao ha mal nenhum em deixa-las public, mto menos final. :smile: :grin: :D
Responder Citar

12/11/2009

Ricardo Staroski

Só uma correção, no lugar de final coloca static
ERRADO! [b]X1[/b] e [b]X2[/b] não são [b]static[/b] pois estão associadas aos [b]objetos[/b] da classe Baskara Elas realmente são [b]final[/b] e [b]public[/b]! Trata-se de duas [b]constantes dinâmicas[/b] inicializadas dentro do construtor. Não faz sentido ter [b]getters[/b] para elas muito menos [b]setters[/b]. Uma vez criado um objeto da classe Baskara, esses atributos não vão mudar para aquele objeto.
Responder Citar

12/11/2009

Alison Souza

Uma vez que se declara uma variavel final ela não pode ser modificada, certo? X1 = (-b + Math.sqrt(delta)) / (2 * a); X2 = (-b - Math.sqrt(delta)) / (2 * a); X1 e X2, mesmo sendo final recebem o valor da operação? Att, Alison
Responder Citar

12/11/2009

Ricardo Staroski

Uma vez que se declara uma variavel final ela não pode ser modificada, certo?
Quase isso, uma variável [b]final[/b] precisa ser inicializada em algum momento, mas não necessariamente na sua declaração. Mas depois que ela foi inicializada, aí ela não pode ser modificada. Por isso o termo [b]constante dinâmica[/b], a variável vai ter um valor constante porém esse valor pode ser dinâmico, como no exemplo acima, onde X1 e X2 recebem o resultado de uma equação. Mais exemplos:
public class Constantes {

    // constante estática inicializada na declaração
    static final int CONSTANTE_1 = 1;

    // constante estática dinâmica, inicializada no bloco de inicialização da classe
    static final int CONSTANTE_2;

    // bloco de inicialização da classe
    static {
        // o conteúdo dela é dinamico...
        CONSTANTE_2 = (int) (Math.random() * 100);
    }

    // constante não-estática inicializada na declaracao
    final int CONSTANTE_3 = 3;

    // constante não-estática inicializada no bloco de inicialização do objeto
    final int CONSTANTE_4;

    // constante não-estática inicializada no construtor da classe
    final int CONSTANTE_5;

    // bloco de inicialização do objeto
    {
        // poderia ser outro valor obtido dinamicamente
        CONSTANTE_4 = 4;
    }

    // construtor
    public Constantes() {
        // poderia ser outro valor obtido dinamicamente
        // por exemplo via parametro do construtor
        CONSTANTE_5 = 5;
    }
}
Neste tópico [url="http://javafree.uol.com.br/topic-875831-public-static-final-int-COPAS-=-3.html"]aqui[/url] tem mais dicas sobre o [b]static[/b] e [b]final[/b]
Responder Citar

12/11/2009

Diogosouzac Currículo

Como diriam nossos velhos conhecidos Sierra & Berts, "todas" as variaveis deveriam seguir uma onda, q eu particularmente tbm considero nao mto boa, de serem declaradas como privadas... As convençoes existem e sempre vao existir...
Responder Citar

15/02/2011

Marcos Silva

Fiz de outra forma como exercício em aula talvez vocês gostem!!! import javax.swing.*; public class Bascara { private double a, b, c; private double delta; public void setA(double vA){ this.a=vA; } public double getA(){ return this.a; } public void setB(double vB){ this.b=vB; } public double getB(){ return this.b; } public void setC(double vC){ this.c=vC; } public double getC(){ return this.c; } public void setDelta(double vDelta){ this.delta=vDelta; } public double getDelta(){ return this.delta; } public double retornaDelta(double va, double vb, double vc){ double vdelta; vdelta =((vb*vb)-4*va*vc); return vdelta; } public void imprimeRaiz(double a,double b,double delta){ double X1 = (-b + Math.sqrt(delta)) / (2 * a); double X2 = (-b - Math.sqrt(delta)) / (2 * a); System.out.println("Raiz positiva: "+ X1+"\nRaiz negativa: "+ X2+"\n"); JOptionPane.showMessageDialog(null,"Raiz positiva: "+ X1+"\nRaiz negativa: "+ X2); } public static void main(String args[]) { Bascara d1 = new Bascara(); double a,b,c,delta; a=Double.parseDouble(JOptionPane.showInputDialog("Digite a")); b=Double.parseDouble(JOptionPane.showInputDialog("Digite b")); c=Double.parseDouble(JOptionPane.showInputDialog("Digite c")); System.out.println("A: "+a+"\nB: "+b+"\nC: "+c+"\n"); delta=d1.retornaDelta(a,b,c); System.out.print("Delta: " + delta +"\n"); d1.imprimeRaiz(a,b,delta); } } //sei que set's e get's eram desnecessários mais era pra entregar achei melhor coloca-los também !!! X-)
Responder Citar

15/02/2011

Ricardo Staroski

Fórmula de Baskara orientada a objetos:
public final class Baskara {

	public final double x1;
	public final double x2;

	public Baskara(double a, double b, double c) {
		double delta = (b * b) - (4 * a * c);
		x1 = (-b + Math.sqrt(delta)) / (2 * a);
		x2 = (-b - Math.sqrt(delta)) / (2 * a);
	}
}
Adaptando seu código para utilizar a classe acima:
public static void main(String args[]) {
    double a = Double.parseDouble(JOptionPane.showInputDialog("Digite a"));
    double b = Double.parseDouble(JOptionPane.showInputDialog("Digite b"));
    double c = Double.parseDouble(JOptionPane.showInputDialog("Digite c"));

    System.out.println("A: " + a + "\nB: " + b + "\nC: " + c);

    Baskara baskara = new Baskara(a, b, c);
    System.out.println("x1: " + baskara.x1);
    System.out.println("x2: " + baskara.x2);
} 
Responder Citar

15/02/2011

Marcos Silva

no caso é que o escopo pedia que eu usasse o métodos como retornaDelta e o método imprimeRaiz por isso o código não está otimizado... valew!!!
Responder Citar

02/04/2013

Estevan Belinello

Quando eu executo, na hora de mostrar os valores de x1 e x2 ele mostra NaN. Alguém sabe como posso resolver isso? Grato Estevan
Responder Citar

02/04/2013

Marcos Silva

Quando eu executo, na hora de mostrar os valores de x1 e x2 ele mostra NaN. Alguém sabe como posso resolver isso? Grato Estevan
Provavelmente delta está sendo negativo, portanto não existe solução real para a equação. Solução: testar o valor de x1 e x2 ([color=green]Double [/color]tem um método isNaN); ou testar se delta é negativo e, numa variável adicional [color=blue]boolean[/color], marcar o fato de não ter solução real
Responder Citar