NumberFormatException: For input string: "18210086"

3 respostas
java
Marcelloborg0501

Olá, estou com problema para trabalhar na conversão de String para int. É estranho porquê o erro não ocorre em outros métodos praticamente iguais.
O contexto é o seguinte: estou fazendo a leitura de arquivo txt e armazenando os dados no em uma String gigante e separando os dados por “;” (ponto e vírgula) utilizando o split para criar um vetor gigante com meus dados já separados( o vetArq[ ]).
Criei um contador que vai escaneando o vetArq e armazenando os respectivos dados em variáves que serão os atributos de meus objetos depois no construtor.

Método que retorna o vetArq:

private String[] retVetArq() throws IOException{

Scanner scan = new Scanner(file);

String sArq = “”;

String[] vetArq;
for(int i = 0 ; scan.hasNext(); i++ ){
        sArq += scan.nextLine().trim();
    }
    vetArq = sArq.split(";");
    scan.close();
    return vetArq;
}

Método para importar alunos:
public ArrayList importarAlunos() throws IOException{

ArrayList<Aluno> alunos = new ArrayList();
    String[] vetArq = retVetArq();

    for(int i = 0; i < (vetArq.length -1) ; i++){

        int matricula = Integer.parseInt(vetArq[i++]);
        String nome = vetArq[i++];
        String endereco = vetArq[i++];
        String dataIng = vetArq[i++];
        double multa = Double.parseDouble(vetArq[i]);

        Aluno aluno = new Aluno(matricula,nome,endereco,dataIng,multa);
        alunos.add(aluno);

    }

    return alunos;
}

Arquivo de alunos:
18210086;Marcello Manuel;R Licinio dos Santos Conte,34;20180606;100.0;18210080;Vinicius;Rua Principal,24;20180705;999.99;

(Obs: está funcionando perfeitamente)

Método para importar professores:
public ArrayList importarProfessores() throws IOException{

ArrayList<Professor> professores = new ArrayList();
    String[] vetArq = retVetArq();

    for(int i = 0; i < (vetArq.length -1) ; i++){

        int matricula = Integer.parseInt(vetArq[i++]);      <<<(ERRO OCORRE AQUI)
        String nome = vetArq[i++];
        String endereco = vetArq[i++];
        String dataIng = vetArq[i++];
        String setor = vetArq[i];

        Professor professor = new Professor(matricula,nome,endereco,dataIng,setor);
        professores.add(professor);
    }

    return professores;
}

arquivo de professores:
18210086;Rober Marcone;R ALEATORIA;20000101;Engenharias;2;Cintia;AV ALEATORIO;20060303;Computação;

Por favor me ajudem

3 Respostas

staroski

Posta o StackTrace.

Lucas_Camara

Tente fazer um trim na String antes de realizar o parse, pois pode haver um espaço, ocasionando no erro.

Fabio_Dos_Reis

Talvez algo assim resolva:

private boolean isInt(String texto) {
        	
        	try{
        		Integer.parseInteger(texto);
        	}catch(NumberFormatException e){
        		return false;
        	}
        	return true;   	
        }

    Integer n = 0;
    if(isInt("10"))
     n = Integer.parseInteger("10");
Criado 1 de junho de 2019
Ultima resposta 3 de jun. de 2019
Respostas 3
Participantes 4