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

Sistem caixa eletronico

Boa tarde, incrementei o caixa eletrônico dos curso porem esta da um exception no MostraConta


namespace CaixaEletronico
{
    public partial class Form1 : Form
    {
        Conta[] contas;
        private int quantidadeDeContas;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            contas = new Conta[20];

            Conta contaDoVictor = new ContaCorrente();
            contaDoVictor.Titular = new Cliente();
            contaDoVictor.Titular.Nome = "Victor da Silva";
            contaDoVictor.Agencia = 4770;
            contaDoVictor.Numero = 123454;
            contaDoVictor.Titular.cpf = "5215248765";
            contaDoVictor.Titular.Rg = "25486x";
            contaDoVictor.Titular.idade = "29";
            contaDoVictor.Titular.sexo = "Masculino";
            contas[0] = contaDoVictor;

            Conta contaDoGuilherme = new ContaPoupanca();
            contaDoGuilherme.Titular = new Cliente();
            contaDoGuilherme.Titular.Nome = "Guilherme de Moura";
            contaDoGuilherme.Agencia = 4882;
            contaDoGuilherme.Numero = 678915;
            contaDoGuilherme.Titular.cpf = "2154789654";
            contaDoGuilherme.Titular.Rg = "214782";
            contaDoGuilherme.Titular.idade = "40";
            contaDoGuilherme.Titular.sexo = "Masculino";
            contas[1] = contaDoGuilherme;



            this.quantidadeDeContas = 20;

            foreach (Conta conta in this.contas)
            {
                if (conta != null) {
                    comboContas.Items.Add(conta);
                    destinoDaTransferencia.Items.Add(conta);
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string textoValorSaque = valorOperacao.Text;

            double valorDeposito = Convert.ToDouble(textoValorSaque);

            int indiceSelecionado = comboContas.SelectedIndex;

            Conta contaSelecionada = this.contas[indiceSelecionado];
            contaSelecionada.Deposita(valorDeposito);

            MostraConta(contaSelecionada);
        }

        private void button2_Click(object sender, EventArgs eA)
        {
            string textoValorSaque = valorOperacao.Text;

            double valorSaque = Convert.ToDouble(textoValorSaque);
            Conta contaSelecionada = this.BuscaContaSelecionada();

            try {
                contaSelecionada.Saca(valorSaque);
                MessageBox.Show("Dinheiro Liberado");
            }
            catch (SaldoInsuficienteException e)
            {
                MessageBox.Show("Saldo insuficiente. " + e.Message);
            }
            catch (ArgumentException e)
            {
                MessageBox.Show("Não é possível sacar um valor negativo. " + e.Message);
            }

            this.MostraConta(contaSelecionada);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Conta contaSelecionada = this.BuscaContaSelecionada();

            int indiceDaContaDestino = destinoDaTransferencia.SelectedIndex;

            Conta contaDestino = this.contas[indiceDaContaDestino];

            string textoValor = valorOperacao.Text;
            double valorTransferencia = Convert.ToDouble(textoValor);

            contaSelecionada.TransferePara(contaDestino, valorTransferencia);

            this.MostraConta(contaSelecionada);

        }

        public void AdicionaConta(Conta c)
        {
            if (this.quantidadeDeContas == this.contas.Length)
            {
                Conta[] novo = new Conta[this.contas.Length * 2];
                for (int i = 0; i < this.quantidadeDeContas; i++)
                {
                    novo[i] = this.contas[i];
                }
                this.contas = novo;
            }
            this.contas[this.quantidadeDeContas] = c;
            this.quantidadeDeContas++;
            comboContas.Items.Add(c);
        }




    private void MostraConta(Conta conta)
    {

      textoSaldo.Text = Convert.ToString(conta.Saldo);
        textoAgencia.Text = Convert.ToString(conta.Agencia);
        textoNumero.Text = Convert.ToString(conta.Numero);
        textoTitular.Text = conta.Titular.Nome;
        textoCPF.Text = conta.Titular.cpf;
        textoRG.Text = conta.Titular.Rg;
        textoIdade.Text = conta.Titular.idade;
        textSexo.Text = conta.Titular.sexo;

    }

    private Conta BuscaContaSelecionada()
    {
        int indiceSelecionado = comboContas.SelectedIndex;
        r
3 respostas

segue a mensagem

System.FormatException ocorrido
  HResult=0x80131537
  Message=A cadeia de caracteres de entrada não estava em um formato correto.
  Source=<Não é possível avaliar a origem da exceção>
  StackTrace:
   em System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   em System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   em System.Convert.ToInt32(String value)
   em CaixaEletronico.CadastroDeContas.button1_Click(Object sender, EventArgs e) em C:\Users\Karin Oldani\Desktop\CaixaEletronicoKarin\CaixaEletronico\CadastroDeContas.cs:linha 52
   em System.Windows.Forms.Control.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.ButtonBase.WndProc(Message& m)
   em System.Windows.Forms.Button.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   em System.Windows.Forms.Application.RunDialog(Form form)
   em System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
   em System.Windows.Forms.Form.ShowDialog()
   em CaixaEletronico.Form1.button5_Click(Object sender, EventArgs e) em C:\Users\Karin Oldani\Desktop\CaixaEletronicoKarin\CaixaEletronico\Form1.cs:linha 169
   em System.Windows.Forms.Control.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.ButtonBase.WndProc(Message& m)
   em System.Windows.Forms.Button.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   em System.Windows.Forms.Application.Run(Form mainForm)
   em Caelum.CaixaEletronico.Program.Main() em C:\Users\Karin Oldani\Desktop\CaixaEletronicoKarin\CaixaEletronico\Program.cs:linha 20
solução!

Olá Karin,

pelo erro que você passou parece que o erro na verdade está na classe CadastroDeContas na linha 52:

CadastroDeContas.button1_Click(Object sender, EventArgs e) em C:\Users\Karin Oldani\Desktop\CaixaEletronicoKarin\CaixaEletronico\CadastroDeContas.cs:linha 52

Mais especificamente quando ele tentou transformar uma String num int System.Convert.ToInt32(String value)

Muito obrigada

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software