Não consigo pegar valor de um String da class "Pai"

2 respostas
C

Tenho um class pai que tem um textField que armazeno seu valor numa string qualquer (qualquer = texField.getText() )
em outra class estendida da estendida do pai quero pegar o valor dessa String pq não consigo? OBS: estou tentando
implementar o FACTORY METHOD... Estou fazendo um calculadora... e estou ainda trabalhando na forma de fazer as operações
esse da adição ta POGado + chegou a funcionar...Estou com muitas dificuldades em fazer... :?

//Essa e a Classe Principal...

//Exemplo

public class Calculadora extends JFrame implements ActionListener {

JTextField textVisor;
 String teste;

public Calculadora() {
//a Implementação de toda interface gráfica
//     ...

btnIgual.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                teste = textVisor.getText();
                Operacoes operacao = FabricaOperacoes.getOperacao("adicao");



    }
        });

 public static void main(String[] args) {
        new Calculadora();





    }

Essa e a Fabrica...

public class FabricaOperacoes {

    public static Operacoes getOperacao(String operacao) {
        
        if (operacao == null) {
            return null;
        } else if (operacao.equals("adicao")) {
            
            
            return new Adicao();
        } else {
            return null;
        }
    }
}
public abstract class Operacoes extends Calculadora {

    public double operacao() {
        System.out.println("Aqui");
        teste = textVisor.getText();
        return resultado;
    }
}

Meu objetivo e obter o valor da String nessa classe

public class Adicao extends Operacoes {

    public Adicao() {


        System.out.println("entrou na adicao com o teste valendo " + teste);
        if (teste.contains("+")) {
            System.out.println("entrou no adicao" + teste);
            String[] resu = teste.split("\\+");
            for (int x = 0; x < resu.length; x++) // resu = a;
            {
                System.out.println("entrou no for");
                System.out.println("aqui a o resu: " + resu[x]);

                valor = Double.parseDouble(resu[x]);
                resultado += valor;
            }
            textVisor.setText(teste + " " + resultado);
        }



    }

2 Respostas

yhhik

passe a string pelo construtor.

denistuning
Proponho que você faça um algoritimo na mão mesmo, um esboço, depois fazer um rascunho numa folha de papel desenhando, de quem é a responsabilidade de cada parte. Parece me que está confuso na sua mente os códigos. Por exemplo:
public abstract class Operacoes extends Calculadora {  
  
    public double operacao() {  
        System.out.println("Aqui");  
        teste = textVisor.getText();  
        return resultado;  
    }  
}

Você pega o texto do visor com "teste = textVisor.getText()" e não faz nada com ele. E depois retorna outra variável que nem está declarada aparentemente.

Começando por aqui. Você deve aproveitar o construtor (método que é chamado sempre que uma classe é instanciada, ou seja, quando usamos o "new") do Double, e converter o texto. No seu caso ficaria assim:
public double operacao() {
    System.out.println("Passou por aqui: Classe: Operacoes | Método: operacao( )");
    String teste = textVisor.getText();
    Double valorTeste = null;
    if(!teste.isEmpty()){
        valorTeste = new Double(teste);
    } else {
        valorTest = Double.NaN;
    }
    return valorTest;

O código acima apenas analisa o código, e não a analise sintática. Pois no código acima vc diz que quem usar esse método vai fazer uma operação, mas ele não faz nada. :/

Esse seria o código que você estaria tentando confeccionar, eu acho:
char adicao = '+';
char subtracao = '-';
/**E os outros aqui...*/

public double operacao(char operacao, double x, double y) {
    switch(operacao){
        case('+'):
        return (x+y);
/**Daí continua...*/
}

Acho que já dá para ajudar com isso.

Criado 25 de novembro de 2011
Ultima resposta 25 de nov. de 2011
Respostas 2
Participantes 3