Problema em converter String lidos de um arquivo txt para numeros

3 respostas
M

Pessoal meu problema é o seguinte, tenho dados numeros que forma armazenados em um arquivo texto, cada linha possui quadro informações, então estou usando StringTokenizer para separa-los, depois preciso converte-los em numeros, e quando executo o programa está gerando uma exceção, que esta a baixo:

Exception in thread main java.lang.NumberFormatException: 0   -1.0

at java.lang.Integer.parseInt(Integer.java:423)

at java.lang.Integer.parseInt(Integer.java:463)

at CapturaDados.leArquivo(CapturaDados.java:38)

at CapturaDados.main(CapturaDados.java:68)

C:\gl3d>

Estou também enviado o arquivo java e o .txt.

Se alguem puder me ajudar…help

3 Respostas

p5f8

cara você não quer utilizar o método substring do método:

exemplo da sua 1º linha

0;-1.0;0.0;0.0;0.69813174

String stringCampo1 = linha.substring(0,1); String stringCampo2 = linha.substring(2,6); int intCampo2 = Integer.parseInt(stringCampo2); System.out.println("campo1 = " + stringCampo1); System.out.println("campo2 = " + intCampo2);

a saida deve ser algo como:

campo1 =  0 campo2 = -1.0

espero ter ajudado

M

Fiz como vc falou mais o problema está quando uso conversor de string para numerico, produz a seguinte excecao

Exception in thread main java.lang.NumberFormatException:  -1

at java.lang.Integer.parseInt(Integer.java:414)

at java.lang.Integer.parseInt(Integer.java:463)

at CapturaDados.leArquivo(CapturaDados.java:33)

at CapturaDados.main(CapturaDados.java:53)

C:\gl3d>

abaixo está meu codigo:

import java.io.*;
import java.util.StringTokenizer;

public class CapturaDados
{

public static  void leArquivo() {
	File arquivo = new File("gl3d.txt");

	FileInputStream   fileInputStream;
	InputStreamReader inputStreamReader;
	LineNumberReader  lineNumberReader;

	String linha;

	/* ABRIR ARQUIVO */
	try {
		fileInputStream   = new FileInputStream(arquivo);
		inputStreamReader = new InputStreamReader(fileInputStream);
		lineNumberReader  = new LineNumberReader(inputStreamReader);

		/* LEITURA LINHA A LINHA DO ARQUIVO */
		while (lineNumberReader.ready()) {
			linha = lineNumberReader.readLine();

			/* IMPRIME LINHA */
		 String stringCampo1 = linha.substring(0,1);
		String stringCampo2 = linha.substring(3,6); 
		int intCampo2 = Integer.parseInt(stringCampo2);
		System.out.println("campo1 = " + stringCampo1);
		System.out.println("campo2 = " + intCampo2);		
		
		}



	} catch (FileNotFoundException fileNotFoundException) {
		System.out.println(fileNotFoundException);
	} catch (IOException ioException) {
		System.out.println(ioException);
	}
}

public static void main(String args[]) {
	
	
CapturaDados capturadados = new CapturaDados();
	
capturadados.leArquivo();
}

}

Estou usando java 1.3.1, devido problemas de implementação

p5f8

tai como ficou...

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.StringTokenizer;

public class CapturaDados
{
	public void leArquivo() {
		File arquivo = new File("gl3d.txt");

		FileInputStream   fileInputStream;
		InputStreamReader inputStreamReader;
		LineNumberReader  lineNumberReader;

		String linha;

		/* ABRIR ARQUIVO */
		try {
			fileInputStream   = new FileInputStream(arquivo);
			inputStreamReader = new InputStreamReader(fileInputStream);
			lineNumberReader  = new LineNumberReader(inputStreamReader);

			/* LEITURA LINHA A LINHA DO ARQUIVO */
			while (lineNumberReader.ready()) {
				linha = lineNumberReader.readLine();

				
				System.out.println(linha);
					/* IMPRIME LINHA */
				
				StringTokenizer st = new StringTokenizer(linha,";");
				while( st.hasMoreElements() ) {
					
					String campo1 = st.nextToken();
					String campo2 = st.nextToken();
					String campo3 = st.nextToken();
					String campo4 = st.nextToken();
					String campo5 = st.nextToken();
					
					int intCampo1 = Integer.parseInt(campo1);
					
					double doubleCampo2 = 0.0d; 
					try {
						doubleCampo2 = Double.parseDouble(campo2);
					} catch (Exception e) {
						doubleCampo2 = 0.0f;
					}
					
					double doubleCampo3 = 0.0d; 
					try {
						doubleCampo3 = Double.parseDouble(campo3);
					} catch (Exception e) {
						doubleCampo3 = 0.0f;
					}

					double doubleCampo4 = 0.0d; 
					try {
						doubleCampo4 = Double.parseDouble(campo4);
					} catch (Exception e) {
						doubleCampo4 = 0.0f;
					}

					double doubleCampo5 = 0.0d; 
					try {
						doubleCampo5 = Double.parseDouble(campo5);
					} catch (Exception e) {
						doubleCampo5 = 0.0d;
					}
					
					
					System.out.println("campo1  =" +  intCampo1);
					System.out.println("campo2  =" +  doubleCampo2);
					System.out.println("campo3  =" +  doubleCampo3);
					System.out.println("campo4  =" +  doubleCampo4);
					System.out.println("campo5  =" +  doubleCampo5);
					
					
				}
				
				
				
			}
			
			lineNumberReader.close();

		} catch (FileNotFoundException fileNotFoundException) {
			fileNotFoundException.printStackTrace();
		} catch (IOException ioException) {
			ioException.printStackTrace();
		}
	}

	public static void main(String args[]) {
		
		
		CapturaDados capturadados = new CapturaDados();
		
		capturadados.leArquivo();
	}

}
Criado 29 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 3
Participantes 2