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

Saldo não aparece no terminal

Eu inseri o objeto this.saldo no método toString da classe Conta, porém o mesmo não está aparecendo quando compilo a classe TesteOrdenacao. O que pode estar errado? Segue o código

package br.com.bytebank.banco.modelo;


public abstract class Conta extends Object implements Comparable<Conta>{

    protected double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total;

    public Conta( int agencia, int numero) {

        Conta.total ++;
        this.agencia = agencia;
        this.numero = numero;
    }

// código omitido

 @Override
    public String toString() {
        return " Número: " + this.numero + " , Agência: " + this.agencia + " , Saldo: " + this.saldo;

    } 
}
4 respostas

Boa noite, Liziane.

Seu toString parece estar correto. Posta o código do TestaOrdenacao para tentar entender melhor o que pode estar acontecendo.

Eu dupliquei a classe de ordenação pra fazer a aula das classes lambda. Por isso, vou postar as duas aqui

Classe do teste de ordenação:

package br.com.bytebank.banco.test.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import br.com.bytebank.banco.modelo.Cliente;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;

public class TesteOrdenacao {

    public static void main(String[] args) {

        Conta cc1 = new ContaCorrente(22, 33);
        Cliente clienteCC1 = new Cliente();
        clienteCC1.setNome("Nico");
        cc1.setTitular(clienteCC1);
        cc1.deposita(333.0);

        Conta cc2 = new ContaPoupanca(22, 44);
        Cliente clienteCC2 = new Cliente();
        clienteCC2.setNome("Guilherme");
        cc2.setTitular(clienteCC2);
        cc2.deposita(444.0);

        Conta cc3 = new ContaCorrente(22, 11);
        Cliente clienteCC3 = new Cliente();
        clienteCC3.setNome("Paulo");
        cc3.setTitular(clienteCC3);
        cc3.deposita(111.0);

        Conta cc4 = new ContaPoupanca(22, 22);
        Cliente clienteCC4 = new Cliente();
        clienteCC4.setNome("Ana");
        cc4.setTitular(clienteCC4);
        cc4.deposita(222.0);

        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);

        for (Conta conta : lista) {
            System.out.println(conta);

        }

//        numeroDaContaComparator comparator = new numeroDaContaComparator();
//        titularDaContaComparator titularComparator = new titularDaContaComparator();

        lista.sort(new titularDaContaComparator()); 

        //Collections.sort(lista, new numeroDaContaComparator());
        // Collections.sort(lista);
        //Collections.reverse(lista);


        System.out.println("------------------------------------------------");

        for (Conta conta : lista) {
            System.out.println(conta + " , " + conta.getTitular().getNome());

        }
    }
}

class titularDaContaComparator implements Comparator<Conta> {

    @Override
    public int compare(Conta c1, Conta c2) {

        String nomeC1 = c1.getTitular().getNome();
        String nomeC2 = c2.getTitular().getNome();

        return nomeC1.compareTo(nomeC2);
    }

}

class numeroDaContaComparator implements Comparator<Conta> {

    @Override
    public int compare(Conta c1, Conta c2) {

        return Integer.compare(c1.getNumero(), c2.getNumero());

//        return c1.getNumero() - c2.getNumero();

//        if(c1.getNumero() < c2.getNumero()) {
//            return -1;
//            }
//        if (c1.getNumero() > c2.getNumero()) {
//            return 1;
//        }
//        
//        return 0;
//        
//        
    }
}






Teste da classe lambda:

package br.com.bytebank.banco.test.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

import br.com.bytebank.banco.modelo.Cliente;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;

public class TesteLambda {

    public static void main(String[] args) {

        Conta cc1 = new ContaCorrente(22, 33);
        Cliente clienteCC1 = new Cliente();
        clienteCC1.setNome("Nico");
        cc1.setTitular(clienteCC1);
        cc1.deposita(333.0);

        Conta cc2 = new ContaPoupanca(22, 44);
        Cliente clienteCC2 = new Cliente();
        clienteCC2.setNome("Guilherme");
        cc2.setTitular(clienteCC2);
        cc2.deposita(444.0);

        Conta cc3 = new ContaCorrente(22, 11);
        Cliente clienteCC3 = new Cliente();
        clienteCC3.setNome("Paulo");
        cc3.setTitular(clienteCC3);
        cc3.deposita(111.0);

        Conta cc4 = new ContaPoupanca(22, 22);
        Cliente clienteCC4 = new Cliente();
        clienteCC4.setNome("Ana");
        cc4.setTitular(clienteCC4);
        cc4.deposita(222.0);

        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);




      lista.sort(( c1, c2) -> Integer.compare(c1.getNumero(), c2.getNumero()));


      Comparator<Conta> comp = (Conta c1, Conta c2) -> {

                String nomeC1 = c1.getTitular().getNome();
                String nomeC2 = c2.getTitular().getNome();
                return nomeC1.compareTo(nomeC2);
             };

             lista.forEach ((conta) -> System.out.println(conta + " , " + conta.getTitular().getNome()));
        }
}

Por via das duvidas, vou mandar o código da classe abstrata também, vai q o erro está lá né? Segue:

package br.com.bytebank.banco.test.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import br.com.bytebank.banco.modelo.Cliente;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;

public class TesteClasseAnonima {

    public static void main(String[] args) {

    Conta cc1 = new ContaCorrente(22, 33);
        Cliente clienteCC1 = new Cliente();
        clienteCC1.setNome("Nico");
        cc1.setTitular(clienteCC1);
        cc1.deposita(333.0);

        Conta cc2 = new ContaPoupanca(22, 44);
        Cliente clienteCC2 = new Cliente();
        clienteCC2.setNome("Guilherme");
        cc2.setTitular(clienteCC2);
        cc2.deposita(444.0);

        Conta cc3 = new ContaCorrente(22, 11);
        Cliente clienteCC3 = new Cliente();
        clienteCC3.setNome("Paulo");
        cc3.setTitular(clienteCC3);
        cc3.deposita(111.0);

        Conta cc4 = new ContaPoupanca(22, 22);
        Cliente clienteCC4 = new Cliente();
        clienteCC4.setNome("Ana");
        cc4.setTitular(clienteCC4);
        cc4.deposita(222.0);

        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);




      lista.sort( new Comparator<Conta>() { //classe anônima


            public int compare(Conta c1, Conta c2) {

                return Integer.compare(c1.getNumero(), c2.getNumero());
            }
          }
    ); 

      Comparator<Conta> comp = new Comparator<Conta>() {

            @Override
            public int compare(Conta c1, Conta c2) {

                String nomeC1 = c1.getTitular().getNome();
                String nomeC2 = c2.getTitular().getNome();

                return nomeC1.compareTo(nomeC2);
            }
      };


      for (Conta conta : lista) {
            System.out.println(conta + " , " + conta.getTitular().getNome());

        }
    }
}



solução!

Bom dia, Liziane.

Copiei seus códigos e rodei a classe TesteOrdenacao, e a saída foi a seguinte:

 Número: 33 , Agência: 22 , Saldo: 333.0
 Número: 44 , Agência: 22 , Saldo: 444.0
 Número: 11 , Agência: 22 , Saldo: 111.0
 Número: 22 , Agência: 22 , Saldo: 222.0
------------------------------------------------
 Número: 22 , Agência: 22 , Saldo: 222.0 , Ana
 Número: 44 , Agência: 22 , Saldo: 444.0 , Guilherme
 Número: 33 , Agência: 22 , Saldo: 333.0 , Nico
 Número: 11 , Agência: 22 , Saldo: 111.0 , Paulo

Como pode ver, o saldo foi exibido e a lista foi ordenada corretamente.

Não é essa a saída que você esperava?