Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 4 do Capítulo 1 - Erro Ao Compilar...

´´´ Ao compilar meu código o Java me retorna este erro:

C:\Users\Everton\Google Drive\workspace\Alura>javac Conta.java Conta.java:39: error: non-static variable this cannot be referenced from a static context ContaCorrente cc = new ContaCorrente(); ^ Conta.java:40: error: non-static variable this cannot be referenced from a static context ContaPoupanca cp = new ContaPoupanca(); ^ Conta.java:37: error: Illegal static declaration in inner class Conta.TestaContas public static void main(String[] args){ ^ modifier 'static' is only allowed in constant variable declarations 3 errors

E não Consigo Descobrir o porque...

Segue meu Código, salvo com nome de arquivo Conta.java

public class Conta{

protected double saldo;

public double getSaldo() { return this.saldo; } public void deposita(double valor) { this.saldo += valor; } public void saca(double valor) { this.saldo -= valor; } public void atualiza(double taxa){ this.saldo += this.saldo * taxa; }

public class ContaCorrente extends Conta{ public void deposita(double valor) { this.saldo += (valor - 0.10); } public void atualiza(double taxa){ this.saldo += this.saldo taxa 2; } } public class ContaPoupanca extends Conta{ public void atualiza(double taxa) { this.saldo += this.saldo taxa 3; }

public void deposita(double valor) { this.saldo += valor - 0.10; } }

public class TestaContas { public static void main(String[] args){ Conta c = new Conta(); ContaCorrente cc = new ContaCorrente(); ContaPoupanca cp = new ContaPoupanca();

c.deposita(1000); cc.deposita(1000); cp.deposita(1000);

c.atualiza(0.01); cc.atualiza(0.01); cp.atualiza(0.01);

System.out.println(c.getSaldo()); System.out.println(cc.getSaldo()); System.out.println(cp.getSaldo());

} } } ```

5 respostas

Cara, dei uma olhada no seu programa. O que eu consegui arrumar eu fiz, agora na main tive um erro de compilação que não consegui.

Abre um novo tópico:

Erro de compilação na main: No enclosing instance of type ContaTeste is accessible. Must qualify the allocation with an enclosing instance of type ContaTeste (e.g. x.new A() where x is an instance of ContaTeste).

public class  ContaTeste {
    protected double saldo;

    public double getSaldo() {
        return this.saldo;
    }

    public void deposita(double valor) {
        this.saldo += valor;
    }

    public void saca(double valor) {
        this.saldo -= valor;
    }

    public void atualiza(double taxa) {
        this.saldo += this.saldo * taxa;
    }

    class ContaCorrente extends ContaTeste {

        public void deposita(double valor) {
            this.saldo += (valor - 0.10);
        }

        public void atualiza(double taxa) {
            this.saldo += taxa * 2;
        }

    }

    class ContaPoupanca extends ContaTeste {

        public void atualiza(double taxa) {
            this.saldo += taxa * 3;
        }

        public void deposita(double valor) {
            this.saldo += (valor - 0.10);
        }
    }

}
public class TestaContas {

        public static void main(String[] args) {
            ContaTeste c = new ContaTeste();
            ContaCorrente cc = new ContaCorrente(); // Não Compila
            ContaPoupanca cp = new ContaPoupanca(); // Não Compila

            c.deposita(1000);
            cc.deposita(1000);
            cp.deposita(1000);

            c.atualiza(0.01);
            cc.atualiza(0.01);
            cp.atualiza(0.01);

            System.out.println(c.getSaldo());
            System.out.println(cc.getSaldo());
            System.out.println(cp.getSaldo());

    }
}
solução!

Amigo encontrei o erro e consegui resolver a questão:

O erro de compilação era uma chave que você não fechou corretamente.

Veja bem: Ao fim do método Atualiza, falta uma chave da classe ContaTeste.

  public void atualiza(double taxa) {
            this.saldo += taxa * 2;
        }
    }
}

Ficando com três chaves e não duas. No final da classe ContaPoupança tire uma chave, pois tem uma chave a mais.

Na classe MAIN, retire os imports ficando assim:

public class TestaContas {

        public static void main(String[] args) {
            ContaTeste c = new ContaTeste();
            ContaCorrente cc = new ContaCorrente();
            ContaPoupanca cp = new ContaPoupanca();

            c.deposita(1000);
            cc.deposita(1000);
            cp.deposita(1000);

            c.atualiza(0.01);
            cc.atualiza(0.01);
            cp.atualiza(0.01);

            System.out.println(c.getSaldo());
            System.out.println(cc.getSaldo());
            System.out.println(cp.getSaldo());

    }
}

E seja Feliz ;))))

Só lembrando que quando tiver um problema assim pesquise antes.

http://www.guj.com.br/38281-erro-de-compilacao-java-

Eu abri um tópico no GUJ para uma dúvida sua, hahaha.

Grande Felipe Portela!

Irmão, incrível cara! Ontem fiquei até as 00:45h tentando resolver isso e revisei o código e revisei as chaves e fui dormir contrariado... Tinha que ir trabalhar hoje mas ansioso para encontrar solução e fico feliz que você tenha me ajudado! Obrigado mesmo Felipe e espero ser útil a você como foi para mim!

Abraço e ótimo final de semana!!! :)

Tranquilo Grande Everton, qualquer dúvida é só postar que tentamos ajudar :]

abraços!