GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Ler dados arquivo csv e converter para array double

java
Tags: #<Tag:0x00007f0c0b017160>

#1

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    
    }
}

#2

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


#3

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 ++
}

#4

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


#5

Oi Mike

vc pode postar um exemplo de como implementar? Grata


#6

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?


#7

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)


#8

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

while(condicao){

}

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


#9

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


#10

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


#11

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: