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

Saldo Conta2 NaN - Função de Transferir

Olá, ao realizar a função de "transferir" , o saldo da conta do Ricardo funciona normal. Mas o saldo da Conta2, que deveria receber o valor de 200 como no exemplo do video, está mostrando um output no terminal de NaN. Até mesmo se eu realizar a função de depositar, ao dar o console.log, o que aparece no terminal é NaN. (Somente da Conta2)

CÓDIGO INDEX.JS

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



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

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

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


const contaCorrente2 = new ContaCorrente();
contaCorrente2.agencia = 102;
contaCorrente2.cliente = cliente2

contaCorrenteRicardo.transferir(200, contaCorrente2)


console.log(contaCorrenteRicardo)
console.log(contaCorrente2)

CÓDIGO CONTACORRENTE.js

 export class ContaCorrente {
    cliente;
    agencia;
    saldo = 0;

    sacar(valor){
        if (this.saldo >= valor) {
            this.saldo -= valor
            console.log(`Você sacou: ${valor} Seu saldo agora é:  ${this.saldo}`)
        } else { console.log("saldo insuficiente")}
    }

    depositar(valor){
        if(valor<= 0) {
            console.log("Valor inválido")
            return
        }

        this.saldo += valor
        console.log("Você depositou:" + valor + " Seu saldo agora é:" + this.saldo)
    }

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

O resultado que estou tendo no console.log após realizar a função de transferir:

ContaCorrente {
  cliente: Cliente { nome: 'Ricardo', cpf: 16221991625 },
  agencia: 1001,
  saldo: 300
}
ContaCorrente {
  cliente: Cliente { nome: 'Alice', cpf: 11122233355 },
  agencia: 102,
  saldo: NaN
}
3 respostas

Bruno,

A primeira questão é quanto ao funcionamento de um método ou função. A função por si só não retorna nenhum valor, ou seja, Not a Number(NaN).

Vou tentar explicar copiando partes do seu código:

contaCorrenteRicardo.transferir(200, contaCorrente2) --> aqui você está chamando o método transferir para transferir da conta corrente do Ricardo para a conta 2.

O seu método Transferir depende do método sacar:

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

Porém o método sacar não retorna nenhum valor e sim Not a Number:

sacar(valor){
        if (this.saldo >= valor) {
            this.saldo -= valor
            console.log(`Você sacou: ${valor} Seu saldo agora é:  ${this.saldo}`)
        } else { console.log("saldo insuficiente")}
    }

Para fazer funcionar, a função deveria retornar algum valor. Neste caso você pode adicionar a linha "return valor" depois da estrutura condicional.

Espero ter ajudado!

insira seu código aqui

Olá, passei horas quebrando a cabeça com esse mesmo erro.

A solução que tive foi declarar inicialmente o _saldo = 0 para cada conta.

no meu código está assim:

const contaCorrenteRicardo = new ContaCorrente()
contaCorrenteRicardo.agencia = 1001;
contaCorrenteRicardo.cliente = cliente1;
contaCorrenteRicardo._saldo = 0       ------------  >>>>> ao definir esta linha, o código passou a retorna um valor e não um NaN


const conta2 = new ContaCorrente()
conta2.cliente = cliente2;
conta2.agencia = 1002
conta2._saldo = 0    -------------------------- >>>>> ao definir esta linha, o código passou a retorna um valor e não um NaN
solução!
sacar(valor){
        if(this._saldo < valor){
            return;
        }
        this._saldo -= valor;
        return valor;
    }

Olá.

Também tive o mesmo erro e resolveu colocando o return no método sacar() e já ficou correto.