3
respostas

A função parseInt, não esta funcionando

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.useDelimiter(",");

                        String valor1 = linhaScanner.next();
                        int valor2 = linhaScanner.nextInt();
                        int valor3 = linhaScanner.nextInt();
                        String valor4 = linhaScanner.next();
                        double valor5 = linhaScanner.nextDouble();

                        System.out.println(valor1 + valor2 + valor3 + valor4 + valor5);

                        linhaScanner.close();

//                        String[] valores = linha.split(",");
//                        System.out.println(valores[1]);
                }
                scanner.close();
        }
}

Alguém sabe me dizer por que a conversão para inteiro não esta funcionando. nas seguintes linhas. int valor2 = linhaScanner.nextInt(); int valor3 = linhaScanner.nextInt();

3 respostas

Boa tarde, Luciano! Como vai?

Ao executar o programa algum erro é gerado? Se sim, vc poderia colar o log completo do erro aqui para eu poder dar uma olhada e tentar te ajudar?

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

Grande abraço e bons estudos, meu aluno!

CC, 22, 33, Nico Steppat,210.1 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at br.com.alura.java.io.teste.TesteLeituraScanner.main(TesteLeituraScanner.java:22)

Ola Luciano tudo bem? Da uma olhadinha nessa linha do código.

linhaScanner.useDelimiter(",");

Qual delimitador você esta usando? Uma virgula certo?

Pelo seu log, o conteúdo do seu CSV é:

CC, 22, 33, Nico Steppat,210.1

Repare que tem um espaço depois das virgulas em: CC,<Espaço>22,<Espaço>33,<Espaço>...

Isso esta causando o erro pois quando ele quebra nos tokens e procura um Integer ele encontra um espaço antes. Para corrigir ou você usa o delimitador da sequinte forma:

linhaScanner.useDelimiter(", ");

Ou tira os espaços do seu CSV

CC,22,33,Nico Steppat,210.1

Faz o teste ai e veja se funciona.

Abs..