Erro na Variavel

3 respostas
K

Ola! Estou com um pequeno problema nesse codigo ... alguem pode ajudar?

/*
	Calculo das Raizes de uma Equacao do Segundo Grau
*/

// Pacote de Extencao Java
import javax.swing.JOptionPane;

class CalculoCoeficiente {
       
    static void input() {
        String a;
        String b;
        String c;
        
        int A;
        int B;
        int C;
        
        a =
        JOptionPane.showInputDialog("Insira o valor de a");
        
        b =
        JOptionPane.showInputDialog("Insira o valor de b");
        
        c =
        JOptionPane.showInputDialog("Insira o valor de c");
        
        System.out.println("Realizando a operaçao...");
        
        A = Integer.parseInt (a);
        B = Integer.parseInt (b);
        C = Integer.parseInt (c);

    }

       
    //Primeira Operacao
    
    static double primeiraop() {
        
        double resultado1;
        
        return (Math.pow(B,2)-(4*A*C));
        
    }
    
    //Segunda Operacao
    
    static double segundaop() {
        
        double resultado1;
        resultado1 = primeiraop();
        
        return ((((-1))*B+Math.sqrt(resultado1)/(2*A)));
        
    }
    
    //Terceira Operacao
    
    static double terceiraop() {
        
        double resultado1;
        resultado1 = primeiraop();
        return ((((-1)*B)-Math.sqrt(resultado1)/(2*A)));
        
    }
        
        //Resultado
        
        public static void main(String[] args) {
            
            input();
            primeiraop();
            segundaop();
            terceiraop();
            
        double resultado2;
        double resultado3;
    
        resultado2 = segundaop();
        resultado3 = terceiraop();
    
        JOptionPane.showMessageDialog (null, "As raizes sao:" +resultado2, "e" +resultado3);
            
        }
    
}

Estou tendo os seguintes erros ao compilar:

CalculoCoeficiente.java:43: cannot find symbol
symbol : variable B
location: class CalculoCoeficiente
return (Math.pow(B,2)-(4*A*C));
^
CalculoCoeficiente.java:43: cannot find symbol
symbol : variable A
location: class CalculoCoeficiente
return (Math.pow(B,2)-(4*A*C));
^
CalculoCoeficiente.java:43: cannot find symbol
symbol : variable C
location: class CalculoCoeficiente
return (Math.pow(B,2)-(4*A*C));
^
CalculoCoeficiente.java:54: cannot find symbol
symbol : variable B
location: class CalculoCoeficiente
return ((((-1))*B+Math.sqrt(resultado1)/(2*A)));
^
CalculoCoeficiente.java:54: cannot find symbol
symbol : variable A
location: class CalculoCoeficiente
return ((((-1))*B+Math.sqrt(resultado1)/(2*A)));
^
CalculoCoeficiente.java:64: cannot find symbol
symbol : variable B
location: class CalculoCoeficiente
return ((((-1)*B)-Math.sqrt(resultado1)/(2*A)));
^
CalculoCoeficiente.java:64: cannot find symbol
symbol : variable A
location: class CalculoCoeficiente
return ((((-1)*B)-Math.sqrt(resultado1)/(2*A)));
^
CalculoCoeficiente.java:83: cannot find symbol
symbol : method showMessageDialog(,java.lang.String,java.lang.String)
location: class javax.swing.JOptionPane
JOptionPane.showMessageDialog (null, "As raizes sao:" +resultado2, "e" +resultado3);
^
8 errors

Obrigado !!

3 Respostas

ribclauport

Bom, eu fiz algumas alterações no código somente para compilar e parar os erros, vou abaixo enumerar algumas coisas que você deve se atentar:

Você está usando métodos estáticos, para fazer operações que atuam sobre variáveis de instância, ou seja, você vai precisar marcar as variáveis como static,
e sendo assim sua classe começa a deixar de ter um estado definido para cada instância, e passa ter somente um estado para as variáveis!, não se esqueça que variáveis do tipo static, tem seus valores definidos para todas as classes, e não para uma instância em particular!, repare que no seu código em alguns pontos você tenta acessar variáveis "não estáticas" em um metodo estático dentro da própria classe!, lembre-se
-->metodos estaticos somente pode acessar variaveis estáticas, dentro de uma classe
-->Se tiver uma variável estática, seu valor estara disponivel para todas as instâncias
--> Se for trabalhar com objetos que tem um estado, declare variáveis de instância (Nao acha que é uma raiz por cálculo!, aqui variáveis a, b e c devem ser de instância)

Somente alterei o codigo para compilar, troquei os nomes das variáveis locais por paramA, paramB.... por quê?
A convenção de código diz:
-->nomes de variáveis começam com letra minuscula!
-->nomes de métodos começam com letra minuscula!
-->nomes de classe começam com letra máiuscula

e também use "camelCase" isso mesmo a variável deve ficar como as costas do camelo! veja:

String paramParaEquacaoDoSegundoGrau;
usar camelCase significa: primeira letra minúscula, e o resto das palavras que compõem a "frase" em maíuscula, acredito que o exemplo acima é auto explicativo!

bom, tem mais coisas como gets e setters, mas por hora, aplique os conceitos aqui comentados, qualquer dúvida poste novamente, segue abaixo o codigo que está compilando com a retirada dos "statics" e alteração de chamadas as variáveis, reveja a lógica pois somente alterei para compilar, não conferi a lógica do algoritmo,
futuramente cosidere separa em "classes" especialistas seu código, pois do jeito que está, não tem conceitos de orientação a objetos aplicados!

package food;

// Pacote de Extencao Java  
import javax.swing.JOptionPane;

class CalculoCoeficiente {
	private int a;
	private int b;
	private int c;

	void input() {
		String paramA;
		String paramB;
		String paramC;

		paramA = JOptionPane.showInputDialog("Insira o valor de a");

		paramB = JOptionPane.showInputDialog("Insira o valor de b");

		paramC = JOptionPane.showInputDialog("Insira o valor de c");

		System.out.println("Realizando a operaçao...");

		a = Integer.parseInt(paramA);
		b = Integer.parseInt(paramB);
		c = Integer.parseInt(paramC);

	}

	// Primeira Operacao

	double primeiraop() {

		double resultado1; //XXX: Essa variável nunca está sendo usada

		return (Math.pow(b, 2) - (4 * a * c));

	}

	// Segunda Operacao

	double segundaop() {
		
		double resultado1;
		resultado1 = primeiraop();

		return ((((-1)) * this.b + Math.sqrt(resultado1) / (2 * a)));

	}

	// Terceira Operacao

	double terceiraop() {

		double resultado1;
		resultado1 = primeiraop();
		return ((((-1) * a) - Math.sqrt(resultado1) / (2 * b)));

	}

	// Resultado

	public static void main(String[] args) {
		CalculoCoeficiente cC = new CalculoCoeficiente();
		cC.input();
		cC.primeiraop();

		double resultado2;
		double resultado3; //XXX: tinha duas camadas aos metodos segundaop()....
          
		resultado2 = cC.segundaop();
		resultado3 = cC.terceiraop();

		JOptionPane.showMessageDialog(null, "As raizes sao:" + resultado2, "e"
				+ resultado3, 0);

	}

}

Espero ter ajudado.

B

Tenta colocar as variáveis A, B, C como atributo da classe.

LPJava

teu problema é que tu chama a variavel do bloco static fora dele:

return ((((-1))*B+Math.sqrt(resultado1)/(2*A)));

variavel A não existe mais ai. ela morreu na linha 34 do teu código. Antes de fazer compilar e passar é preciso entender o motivo do erro, dai recomendo dar uma lida em declaração de variaveis e niveis de pacote de acesso.

Criado 16 de março de 2012
Ultima resposta 17 de mar. de 2012
Respostas 3
Participantes 4