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

System.NullReferenceException foi gerado Object reference not set to an instance of an object

Não consigo implementar a validação de idade para determinar o saque, me apresenta o erro descrito e aponta o erro na linha 21 da classe Conta.

using System;

namespace aluraap2
{
    class MainClass
    {
        public static void Main(string[] args)
        {


            Cliente joao = new Cliente(); 
            Cliente maria = new Cliente(); 

            Conta cjoao = new Conta(); 
            Conta cmaria = new Conta();


            joao.id = 1;
            joao.nome = "João da Silva";
            joao.rg = "12345678-9";
            joao.endereco = "Rua Caxias n 102";
            joao.idade = 20;
            joao.ehMaior();

            maria.id = 2;
            maria.nome = "Maria Oliveira";
            maria.rg = "98765432-1";
        maria.endereco = "Estrada 90";


         cjoao.numero = 1;
            cjoao.saldo = 500.0;
            cjoao.titular = joao.nome;


            cmaria.numero = 2;
            cmaria.saldo = 500.0;
            cmaria.titular = maria.nome;


            cjoao.Saca(300.0);


            Console.WriteLine("Saldo:" + cjoao.saldo);


        }
    }
}

Classe Cliente

using System;
namespace aluraap2
{
    public class Cliente
    {

        public int id;
        public string nome;
        public int idade;
        public string rg;
        public string endereco;

        public bool ehMaior()
        {

            return this.idade >= 18;
        }
    }

}

Classe Conta

using System;
namespace aluraap2
{
    public class Conta
    {

        public int numero;
        public string titular;
        public double saldo;
        public Cliente cliente;


        public void Saca(double valorSacado){

            if(valorSacado <= this.saldo && valorSacado > 0){
                if (this.cliente.ehMaior()){    <------ LINHA 21
                    this.saldo -= valorSacado;
                }else{
                    valorSacado = 200.0;                   
                    this.saldo -= valorSacado;                 
                }
            }   


        }


        public void Deposito(double valorDeposito){
            if (valorDeposito < this.saldo && valorDeposito> 0)
                this.saldo += valorDeposito;
        }


        public void Transfere(double vlrT , Conta destino){

            if (vlrT < this.saldo && vlrT > 0){

                this.Saca(vlrT);
                destino.Deposito(vlrT);
            }
        }


    }
}
1 resposta
solução!

O erro está no fato do this.cliente não foi inicilizado. Eu vi que na MainClass foi atribuido o nome no atributo titular das contas, porem o atributo cliente nao foi atribuido.

Tente rodar adicionando o seguinte código na MainClass:

    // Adicione essas linhas ****
            cjoao.cliente = joao;
            cmaria.cliente = maria;
    // Adicione essas linhas ****

            cjoao.Saca(300.0);


            Console.WriteLine("Saldo:" + cjoao.saldo);