Ler dados arquivo csv e converter para array double

10 respostas
java
Eliana_Pereira

Sou novata em java e estou com dificuldades para resolver o seguinte problema:
Tenho vários valores decimais em um arquivo csv, preciso pegar esses valores colocar num array double e efetuar cálculos com os mesmo.
Qdo faço a conversão para double aparece: java.lang.NumberFormatException: For input string: “5.0,3.6,1.4,0.2,1”.
Qdo uso replace para retirar as vírgulas mostra multiple points

Alguém pode dar uma força?

public void Lercsv() throws IOException
{				
	BufferedReader reader = new BufferedReader(
            new InputStreamReader(new FileInputStream(caminho)));
	String linha = null;
    while ((linha = reader.readLine()) != null) {
    			Todos=linha;
    }
    double [] b =new double[Todos.length()];
    for(int i=0; i<Todos.length();i++)
    {
    	b[i]=Double.valueOf(Todos)).doubleValue();	// aqui dá erro    
    }
}

10 Respostas

Mike

Você pode separar os números a cada virgula e colocar num array através do método split

String[] numerosString = "5.0,3.6,1.4,0.2,1".split(",");

Ai você itera esse array e faz a conversão

Eliana_Pereira

Obrigada Mike pela dica, no entanto ainda estou com problemas pois só funciona qdo inicializo os valores diretamente no vetor.
Qdo informo ao vetor onde estão os decimais da erro

BufferedReader reader = new BufferedReader(
             new InputStreamReader(new FileInputStream(caminho)));
		String linha = null;
		int Linhas=0;
		while ((linha = reader.readLine()) != null) {
			Todos.add(linha);
			Dados[Linhas]=linha.split(",");
                        Linhas ++
}
Mike

Primeiro você tem que pegar tudo do arquivo e depois dar o split

Eliana_Pereira

Oi Mike

vc pode postar um exemplo de como implementar? Grata

Mike

Voce conseguiu pegar do arquivo ao menos?

Passos:
1-Ler o arquivo
2-Concatenar em uma string
3-Depois que o while acabar, use o split na string e atribua o retorno a um vetor String
4-Fazer um for para converter o array de String em um array de double

Conseguiu algum desses?

Eliana_Pereira

Mike
As etapas 1 e 2 OK.
Na etapa 3
use o split na string e atribua o retorno a um vetor String (Não tá dando certo)

4-Fazer um for para converter o array de String em um array de double (não fiz)

Mike

Adicione o conteudo do arquivo a uma string, quando terminar o while, você da um split

while(condicao){

}

String[] numeros = suaString.split[","];

Eliana_Pereira

Então Mike
Eu já havia tentado dessa forma. Dá erro!
Preciso pegar cada um dos valores e jogar no array …

Mike

Concatena em uma string só e depois da o split, ai voce tera o array de double

Eliana_Pereira

Resolvido

public void Lercsv() throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(caminho)));
	String linha = null;
	int Linhas=0;

	while ((linha = reader.readLine()) != null) {
		for (String str:linha.split(","))
		{
			registro[Linhas]=str;
		}
	}

Agradeço a ajuda :slight_smile:

Criado 13 de julho de 2018
Ultima resposta 14 de jul. de 2018
Respostas 10
Participantes 2