3
respostas

Erro no código

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

André,

Identifiquei que:

1) O seu loop é realizado uma vez com sucesso ou parcialmente (não sei se realiza o linhasSeparadas.close()) pois a primeira linha do seu arquivo é impresso .

"CC,22,33,..."

2) Sugiro colocar um uma saída de texto na tela após linhasSperadas.close() para garantir que ele executa o primeiro loop completo com êxito;

3) Verificar se o seu arquivo "contas.csv" está corretamente formatado.

Já tem um tempo que não vejo Java, mas espero ter ajudado.

Bons estudos.

não é linhaSperadas.close() não, pd ser q seja o arquivo, por conta q qdo clico nele, ele abre no excel, não sei se tem algo a ver, mas o erro, ele da a partir da linha 22, até q se eu comento ela, vai para a próxima linha o erro. Não sei o pq do erro. :(

Olá Andre! Tudo bem? Acabei de finalizar esse curso sobre o pacote java.io e dando uma olhada rápida no seu código percebi que na linha 19 você informou o delimitador com um espaço depois da vírgula, dessa forma, o scanner não realizou a quebra da string em um array com 5 índices por que a delimitação informada não era válida e assim, esse erro que geralmente ocorre quando tentamos acessar um índice não existente de um array foi impresso no console.

Segue logo abaixo o código corrigido.

Abraço e bons estudos!

public class ScannerTest {

    public static void main(String[] args) throws Exception {

        Scanner sc = new Scanner(new File("contas.csv"));

        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            Scanner scannerLine = new Scanner(line);
            scannerLine.useLocale(Locale.US);
            scannerLine.useDelimiter(",");
            System.out.format(new Locale("pt"), "%s - %05d and %05d -> %20s: %08.2f %n", scannerLine.next(),
                    scannerLine.nextInt(), scannerLine.nextInt(), scannerLine.next(), scannerLine.nextDouble());
            scannerLine.close();

        }
    }
}