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

Só compila se removo o Int e a String do construtor, por que?

public class TestaOrdenacao  {

    public static void main(String[] args) {

        List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();

        ContaPoupanca c1 = new ContaPoupanca(500, "diego");
        c1.deposita(500);
        contas.add(c1);

        ContaPoupanca c2 = new ContaPoupanca(700, "marcos");
        c2.deposita(100);
        contas.add(c2);

        ContaPoupanca c3 = new ContaPoupanca(600, "jesse");
        c1.deposita(400);
        contas.add(c3);

        Collections.sort(contas);
        System.out.println(c1.getSaldo());
        System.out.println(c2.getSaldo());
        System.out.println(c3.getSaldo());



    }


}
8 respostas

Fala aí, Diego! Beleza? =)

Esse int e a String aos quais você está se referindo, são da ContaPoupanca?

Você poderia colocar o código dela aqui, por favor? =)

Fábio

public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca>  {



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

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

    }
    @Override
    public int compareTo(ContaPoupanca outra){
        return this.getNumero() - outra.getNumero();

}

}

Ahh, legal.

Diego, ele só compila se você remover esses parâmetros do seu construtor, pois você não declarou um construtor que os receba! Repare que você possui os métodos atualiza(), deposita e sobrescreveu o ´compareTo()`. Mas não declarou o construtor!

Nesse caso, ele só reconhece o construtor padrão, sem argumentos (new ContaPoupanca()), sacou? =)

Imagine que, se você não declarou o construtor com argumentos, o compilador não tem como adivinhar onde colocar cada parâmetro, entendeu? =)

Espero ter ajudado!

Abraço e bons estudos,

Fábio

Mesmo eu criando o construtor ele só deposita o "c1.deposita(10), e dá erro de compilação no valor depositado igual do exemplo, entendeu?

Diego,

Eu não vi como está o exemplo. Rs. Mas vamos lá... Posta aqui o código com o construtor que você criou, vamos dar uma olhada! =)

E acho que não entendi muito bem esse erro de compilação que você está dizendo... Talvez com o código do construtor fique um pouco mais claro para mim . =)

Fábio

public ContaPoupanca(double valor, String nome) {
        saldo = this.saldo += valor;
        nome = this.nome ;

    }

//É isso mesmo o resultado só exibi Conta, pois é uma list de contas. Só não entendi por que o exemplo inseri o nome no construtor sendo que a lista está com <ContaPoupança> implementada.
solução!

Diego bom dia.

Sugiro um ajuste no seu construtor, deixando ele assim:

public ContaPoupanca(double valor, String nome) {
    this.saldo = valor;
    this.nome = nome;
}

O porquê disso? Repare que no seu código, você tenta atribuir o valor de this.nome para o parâmetro nome, o que estaria errado já que é ao contrário que você precisa fazer em um Construtor, pegar o valor que chegou nos parâmetros e setar nos atributos.

Quanto a atribuição += do valor, isso não é necessário agora, pois toda vez que você instanciar uma ContaPoupanca, vai passar no construtor o saldo inicial, nunca precisando incrementar já com o valor anterior do atributo this,saldo (afinal acabou de instanciar, o valor de um double é zero). Esse tipo de atribuição += você faz uso no método deposita, aí sim faz sentido.

Testa e conta para a gente se deu certo. Abraços.

Boa noite, Até da jeito errado ele compilava, dizia que o códigos estava com erro e compilava. Ajustei a meu método toString para aparecer o nome e agora está ok.

Muito obrigado.