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

Saldo retorna NaN

Assim como os demais, meu retorno após a transferência é NaN, porém mesmo analisando o código e problema dos colegas, não encontrei o erro.

Index.JS

import { Cliente } from "./Cliente.js";
import { ContaCorrente } from "./ContaCorrente.js";

const cliente1 = new Cliente ();
cliente1.nome = "Ricardo";
cliente1.cpf = 11133355579;

const contaCorrenteRicardo = new ContaCorrente ();
contaCorrenteRicardo.agencia = 1001;
contaCorrenteRicardo.cliente = cliente1;

contaCorrenteRicardo.depositar(500); //Depósito na conta do Ricardo

const cliente2 = new Cliente ();
cliente2.nome = "Alice";
cliente2.cpf = 22244466680;

const contaCorrenteAlice = new ContaCorrente ();
contaCorrenteAlice.agencia = 1001;
contaCorrenteAlice.cliente = cliente2;

contaCorrenteRicardo.transferir(200,contaCorrenteAlice); //Transferência para conta da Alice
                                                        // Valor está sendo sacado, mas não depositado

console.log(contaCorrenteRicardo);
console.log(contaCorrenteAlice);

Cliente.JS

export class Cliente {
    nome;
    cpf;
}

ContaCorrente.JS

export class ContaCorrente {
    agencia;
    cliente;

    _saldo = 0; 

    depositar (valor) {
        if (valor < 0) {
            return 
        } 
        this._saldo += valor;
    }

    sacar (valor) {
        if (this._saldo >= valor) {
            this._saldo -= valor;
        } else {
            console.log('Saldo insuficiente');
        }
    }

    transferir (valor, conta) {
        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);

    }
}
2 respostas
solução!

Olá Helton, tudo bem com você?

A impressão do saldo com o valor NaN (Not-A-Numbe) está informando que o atributo _saldo não está recebendo um número. Esse comportamento está acontecendo devido à não declaração de um retorno para o método sacar, fazendo com que a variável valorSacado no método transferir receba NaN, que logo após é atribuído ao atributo _saldo.

Para corrigir esse comportamento, no arquivo ContaCorrente.JS localize o método sacar, neste método adicione o retorno do valor caso o _saldo seja maior que o valor sacado. O método deverá ficar como apresentado abaixo.

    sacar (valor) {
        if (this._saldo >= valor) {
            this._saldo -= valor;
            return valor;
        } else {
            console.log('Saldo insuficiente');
        }
    }

Após a mudança descrita acima, salve o arquivo ContaCorrente.JS e execute o arquivo index.js verifique se obterá êxito na impressão do valor do _saldo após a transferência.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

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

Funcionou perfeitamente, muito obrigado !!!