7
respostas

Estou fazendo o mesmo exemplo e no meu caso aparece a Exception abaixo, como resolver?

CC - 0022 - 00000033 - Albino Rampinelli - 210,10 CP - 0011 - 00000055 - Nico Steppat - 1300,98 CC - 0022 - 00000044 - Ana Garcias - 350,40 Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at br.com.alura.java.io.teste.TesteLeitura2.main(TesteLeitura2.java:23)

7 respostas

Boa tarde, Albino! Como vai?

Vc poderia postar o código completo da classe TesteLeitura2.java para que eu possa dar uma olhada e tentar te ajudar?

Aproveito para te desejar um excelente ano de 2019, muito estudo e sucesso pra vc!

Pode ser que você não esteja importando o Scanner.

Verifique se existe a chamada da classe no seu programa.

import java.util.Scanner;

Caso exista a chamada, pode ser que você não possua o arquivo .jar da Scanner, neste caso você tem que fazer o download é adicionar essa biblioteca ao seu projeto.

Site para o Download abaixo: http://www.java2s.com/Code/Jar/s/Downloadscanner310cr4sourcesjar.htm

package br.com.alura.java.io.teste;

import java.io.File; import java.util.Locale; import java.util.Scanner;

public class TesteLeitura2 {

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


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

    while(scanner.hasNextLine()){

    String linha = scanner.nextLine();
    //System.out.println(linha);

    Scanner linhaScanner = new Scanner(linha);
    linhaScanner.useLocale(Locale.US);
    linhaScanner.useDelimiter(",");

    String tipoConta = linhaScanner.next();
    int agencia = linhaScanner.nextInt();
    int numero = linhaScanner.nextInt();
    String titular = linhaScanner.next();
    double saldo = linhaScanner.nextDouble();


    System.out.format(new Locale("pt","BR"),"%s - %04d - %08d - %20s - %8.2f %n",
            tipoConta,agencia,numero,titular,saldo);

// String[] valores = linha.split(","); // System.out.println(valores[3]);

    }
    scanner.close();


}

}

Minha resposta esta acima...

Notei que esta faltando a seguinte linha no seu código

System.out.format(new Locale("pt","BR"),"%s - %04d - %08d - %20s - %8.2f %n",
            tipoConta,agencia,numero,titular,saldo);
linhaScanner.close();

java.util.NoSuchElementException --> Simples, você está acessando uma posição em seu arquivo .CVS que não existe.

"TipoConta", "Agencia", "Numero", "Titular" ou "Saldo"... alguma destas informações (colunas) não constam em alguma linha do seu arquivo de entrada

Porém pelo seu print de console eu deduzo que... muito provavelmente existem linhas com espaços em branco ao final do arquivo...

Quando se esta trabalhando com interação sempre trate as exceções.

Abraços

Boa tarde, Albino! Como vai?

Como o Jesiel bem disse, talvez o CSV esteja mal formatado. Vc poderia disponibilizar o seu projeto bem como o CSV utilizado por vc no github, dropbox ou google drive e colar o link aqui? Assim eu posso dar uma olhada mais de perto e tentar te ajudar de uma forma mais efetiva!

Aguardo o seu retorno para que possamos juntos chegar à luz do conhecimento!

Grande abraço e bons estudos, meu aluno!

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