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

System.IndexOutOfRangeException: 'O índice estava fora dos limites da matriz.'

Olá, o meu código está exatamente igual ao do curso. Depurei a aplicação e na terceira iteração do while ele não passa valor nenhum para o vetor.

          partial class Program
    {
        static void UsarStreamReader()
        {
            var enderecoDoArquivo = "contas.txt";

            using (var fluxoDoArquivo = new FileStream(enderecoDoArquivo, FileMode.Open))
            using (var leitor = new StreamReader(fluxoDoArquivo))
            {

                while (!leitor.EndOfStream)
                {
                    var linha = leitor.ReadLine();

                    var contaCorrente = ConverterStringParaContaCorrente(linha);
                    var msg = $"{contaCorrente.Titular.Nome} conta numero{contaCorrente.Numero},ag, {contaCorrente.Agencia}, saldo {contaCorrente.Saldo}";
                    Console.WriteLine(msg);
                    //Console.WriteLine(linha);

                }
            }
        }
        static ContaCorrente ConverterStringParaContaCorrente(string linha)
        {
            var campos = linha.Split(',');

            var agencia = campos[0];
            var numero = campos[1]; (o erro estoura aqui na terceira iteração do while)
            var saldo = campos[2].Replace('.', ',');
            var nomeTitular = campos[3];

            var agenciaComoInt = int.Parse(agencia);
            var numeroComoInt = int.Parse(numero);
            var saldoComoDouble = double.Parse(saldo);

            var titular = new Cliente();
            titular.Nome = nomeTitular;

            var resultado = new ContaCorrente(agenciaComoInt, numeroComoInt);
            resultado.Depositar(saldoComoDouble);
            resultado.Titular = titular;

            return resultado;

        }
    }

Saida:

Jonatan Silva conta numero4644,ag, 375, saldo 2483,13
Debora conta numero4020,ag, 234, saldo 2822,52

Ao meu ver o vetor está assumindo o valor do indice "campos[1]", isso justifica a saida. Não intendo porque ele não lê o arquivo completo. Poderia ajudar-me?

2 respostas
solução!

Olá Henrique!

Verifiquei seu código e está exatamente igual ao da aula e o meu, copiei seu código e rodei e deu tudo certo. Foi difícil emular seu erro, mas consegui.

Seu arquivo contas.txt está faltando informação. Para conseguir estourar o erro com exatamente as saídas e no array certo, tive que modificar meu contas.txt e ficou desse jeito:

375,4644,2483.13,Jonatan
234,4020,2822.52,Debora
316

Verifique seu arquivo, pois é para o erro estar lá.

Espero ter ajudado!

O erro estava mesmo no arquivo txt, eu formatei ele conforme o do instrutor do curso quebrando por linhas assim ele chora, mas quando vc usa o arquivo da maneira original, de maneira sequencial ai sim da certo.