Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro quando uso int no scanner

package br.com.blabla.treino;

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

public class Atribuidor {

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

        Scanner scannerPessoas = new Scanner(new File("nomeenumero.txt"));

        while (scannerPessoas.hasNextLine()) {

            String linha = scannerPessoas.nextLine();


            Scanner valoresLinha=new Scanner(linha);
            valoresLinha.useDelimiter(",");
            String nome=valoresLinha.next();
            int numero=valoresLinha.nextInt();

            //Pessoa.ListaDePessoas.add(new Pessoa(nome,numero));
            valoresLinha.close();
        }
        scannerPessoas.close();

    }

}

meu arquivo de texto

joao , 12

pedro , 45

carlo , 8547

aparecida , 4587

a mensagem de erro:

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at br.com.blabla.treino.Atribuidor.main(Atribuidor.java:24)

1 resposta
solução!

Olá Richard, tudo bem?

Na verdade isso é mais a questão do formato do seu arquivo, quando estamos querendo pegar dados nesse formato csv, e definimos o delimitador como ,, precisamos remover todos os espaços, caso contrário há problema de conversão, pois ao pegar por exemplo:

joao, 12

Teremos:

joao
_12

Onde eu coloquei o _ para simular um espaço, e ai para o Java essa conversão da erro :)

No caso o arquivo deveria estar assim:

joao,12
pedro,45
carlo,8547
aparecida,4587

Pode parecer estranho não dar espaço, mas esse é o padrão, inclusive quando vamos para a área de data science, os bancos de dados são todos nesse formato para que não haja esse tipo de erro =)

Abraços e Bons Estudos!