Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio 1 (Classe ContaBancaria): hora da prática

Por que não podemos colocar o System.out.println com uma mensagem junto com o return ?

package br.com.alura.contabancaria.model;

public class ContaBancaria {
    private int mumeroDaConta;
    private double saldoDaConta;
    public String nomeDoTitular;

    public int getMumeroDaConta() {
        return mumeroDaConta;
    }

    public void setMumeroDaConta(int mumeroDaConta) {
        this.mumeroDaConta = mumeroDaConta;
    }

    public double getSaldoDaConta() {
        return saldoDaConta;
    }

    public void setSaldoDaConta(double saldoDaConta) {
        this.saldoDaConta = saldoDaConta;
    }

    public double recebeValor(double valorRecebido){
        // System.out.println("Saldo disponível: " + saldoDaConta);
        return saldoDaConta += valorRecebido;
    }

    public double transfereValor(double valorTransferido){
        if(valorTransferido <= saldoDaConta){
            // System.out.println("Saldo disponível: R$ " + saldoDaConta);
            return saldoDaConta -= valorTransferido;
        }else{
            // System.out.println("Saldo insuficiente!");
            return 0;
        }
    }
}
import br.com.alura.contabancaria.model.ContaBancaria;

public class Main {
    public static void main(String[] args) {
        ContaBancaria conta = new ContaBancaria();

        conta.nomeDoTitular = "Paulo Silveira";
        conta.setMumeroDaConta(1234);
        conta.setSaldoDaConta(1000);

        System.out.println(String.format("Conta: %d | Titular: %s | Saldo atual: % .2f",
                conta.getMumeroDaConta(), conta.nomeDoTitular, conta.getSaldoDaConta()));

        conta.recebeValor(150);

        System.out.println(String.format("Conta: %d | Titular: %s | Saldo atual: % .2f",
                conta.getMumeroDaConta(), conta.nomeDoTitular, conta.getSaldoDaConta()));

        conta.transfereValor(200);

        System.out.println(String.format("Conta: %d | Titular: %s | Saldo atual: % .2f",
                conta.getMumeroDaConta(), conta.nomeDoTitular, conta.getSaldoDaConta()));
    }
}

Como posso melhorar o meu código ?

1 resposta
solução!

Oi, Sara! Como vai?

A questão do uso do System.out.println junto com o return é porque o return encerra a execução do método imediatamente. Então, se o System.out.println estiver no mesmo lugar, ele nunca será executado.

Por exemplo:

public double recebeValor(double valorRecebido) {
    System.out.println("Saldo atualizado: " + (saldoDaConta + valorRecebido));
    return saldoDaConta += valorRecebido;
}

Aqui, a linha System.out.println é executada antes do return, o que evita o problema. Você não pode escrever o System.out.println na mesma linha ou após o return, porque essas partes do código serão ignoradas.

Como melhorar o código?

  1. É interessante manter os métodos únicos na responsabilidade, ou seja, eles fazem apenas cálculos ou atualizações. Evite misturar a lógica de negócios com saída para o console. Essa é uma prática comum chamada de "separação de preocupações".

  2. Pode ser bacana também corrigir o nome das variáveis que estão com um pequeno erro de digitação. Em vez de mumeroDaConta, pode usar numeroDaConta.

Ficaria assim:

public double recebeValor(double valorRecebido) {
    saldoDaConta += valorRecebido;
    return saldoDaConta;
}

public double transfereValor(double valorTransferido) {
    if (valorTransferido <= saldoDaConta) {
        saldoDaConta -= valorTransferido;
    } else {
        System.out.println("Saldo insuficiente!");
    }
    return saldoDaConta;
}

No método principal, a lógica para imprimir mensagens ficaria no Main, como no exemplo abaixo:

System.out.println("Saldo inicial: " + conta.getSaldoDaConta());
conta.recebeValor(150);
System.out.println("Saldo após receber R$150: " + conta.getSaldoDaConta());

if (conta.transfereValor(1200) == conta.getSaldoDaConta()) {
    System.out.println("Saldo insuficiente.");
} else {
    System.out.println("Saldo após transferência: " + conta.getSaldoDaConta());
}

Como funciona?

  • Os métodos estão apenas atualizando e retornando valores.
  • Mensagens para o console agora são responsabilidade do código na Main.

Espero ter ajudado. Conte sempre com o apoio do fórum :)

Um abraço e bons estudos! Sucesso ✨

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!