Converter String para Int

5 respostas
brunotrinchao

Estou tentando converter uma String que vem do arquivo de texto e coloca-la em um vetor, mas so da erro.

String recebeProd = funcoes.abrir("produtos.txt");
        String[] dados = recebeProd.split("\n");
        int[] cod = new int[dados.length];
        for(int a = 0; a < dados.length; a++){
            
            String[] linhas_prod = dados[a].split(",");
            cod[a] = Integer.parseInt(linhas_prod[a]);
            
        }
        System.out.println(cod[0]);

ERRO:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at teste.main(teste.java:19)
Java Result: 1

5 Respostas

asousaj

Bem vindo ao fórum!

Pode tentar usar expressões regulares, pra forçar que fique apenas números.

String recebeProd = funcoes.abrir("produtos.txt");
        String[] dados = recebeProd.split("\n");
        int[] cod = new int[dados.length];
        for(int a = 0; a < dados.length; a++){
            
            String[] linhas_prod = dados[a].split(",");
            cod[a] = Integer.parseInt(linhas_prod[a].replaceAll("[^0-9]+",""));
            
        }
        System.out.println(cod[0]);

Use a tag code pra ficar mais fácil de ler o código.
Manual do iniciante … http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Sua lógica tá certa? Se não resolver posta em anexo uma amostra do teu txt

brunotrinchao

Mesmo forçando com a expressão regular esta com problema.

Abaixo estou tentando pegar apenas o primeiro índice p armazenar no cod mas n esta dando certo.

String recebeProd = funcoes.abrir("produtos.txt");
        String[] dados = recebeProd.split("\n");
        int[] cod = new int[dados.length];
        for(int a = 0; a < dados.length; a++){            
            String[] linhas_prod = dados[a].split(",");
            for(int b = 0; b < 1; b++){
                //cod[b] = Integer.parseInt(linhas_prod[0].replaceAll("[^0-9]+",""));                
                cod[b] = Integer.parseInt(linhas_prod[0]);
            }            
        }
        System.out.println(cod[0]);
    }
asousaj

asousaj:

Sua lógica tá certa? Se não resolver posta em anexo uma amostra do teu txt

Perguntei porque acho que tua lógica tá errada.
Posta ai um pedaço do teu arquivo txt.

String recebeProd = funcoes.abrir("produtos.txt");
        String[] dados = recebeProd.split("\n");
        int[] cod = new int[dados.length];
        for(int a = 0; a < dados.length; a++){
            
            String[] linhas_prod = dados[a].split(",");
            cod[a] = Integer.parseInt(linhas_prod[0].replaceAll("[^0-9]+",""));
            
        }
        System.out.println(cod[0]);
asousaj

Segue o exemplo menos “capado”, [color=red]não fiz tratamento corretos dos possíveis erros e coisas do tipo[/color].
Considerando file.txt

100,23,55
3a2123,4343,423423
5 3,243423,234

Classe de teste

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Teste {
	public void testing() throws IOException {
		String recebeProd = readFile("/home/adriano/testes/file.txt");
		String[] dados = recebeProd.split("\n");
		int[] cod = new int[dados.length];
		for (int a = 0; a < dados.length; a++) {
			String[] linhas_prod = dados[a].split(",");
			cod[a] = Integer.parseInt(linhas_prod[0].replaceAll("[^0-9]+", ""));
			System.out.println(cod[a]);
		}
		
	}

	private String readFile(String file) throws IOException {
		BufferedReader reader = new BufferedReader(new FileReader(file));
		String line = null;
		StringBuilder stringBuilder = new StringBuilder();
		String ls = System.getProperty("line.separator");
		while ((line = reader.readLine()) != null) {
			stringBuilder.append(line);
			stringBuilder.append(ls);
		}
		reader.close();
		return stringBuilder.toString();
	}

	public static void main(String[] args) {
		Teste t = new Teste();
		try {
			t.testing();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Saída:

100 32123 53

Cuidado para que a ultima linha do arquivo não tenha apenas a “quebra de linha”.
Essas “coisinhas” que não considerei foi pra deixar o mais básico possível e fica pra você praticar.

brunotrinchao

Muito obrigado asousaj. Vou usar seu algorítimo e ver no que dar. Vlw msm.

Criado 22 de novembro de 2013
Ultima resposta 26 de nov. de 2013
Respostas 5
Participantes 2