Abertura de arquivo em uma matriz dinâmica

1 resposta
EdsonFerreira

Olá pessoal, sou novo por aqui apesar de ler os tópicos do fórum há muito tempo.
Estou precisando de uma ajuda. Preciso abrir o conteúdo de um arquivo de números ponto flutuante separados por vírgulas em uma matriz dinâmica, por que não sei o seu tamanho. Então preciso adquirir o conteúdo do arquivo e descobrir o tamanho das linhas e das colunas para instanciar minha matriz, certo?
Estou passando o endereço do arquivo para um [color=red]FileReader[/color] e depois esse como argumento para um [color=red]BufferedReader[/color]. Até aí tudo bem.
Estou pegando o tamanho da linha por um [color=red]readline()[/color] e atribuindo a uma variável inteira de nome linha.
Eu precisava retirar da leitura do arquivo as vírgulas que separam os números para inserí-los sem as vírgulas na matriz para que eu possa trabalhar tranquilamente depois. Tentei atribuir, então, o conteúdo de cada linha sem vírgulas em um vetor por meio da função [color=red]split(",")[/color], mas quando imprimo o conteúdo para ver resulta assim: [color=red] Conteúdo do vetor -> [Ljava.lang.String;@dc840f [/color].
O que estou fazendo de errado?
Vi no fórum uma função chamada [color=red]scanner() [/color], como funciona? Desde já agradeço a todos!
Segue o código fonte:

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class Main {

        
    public static void main(String[] args) throws IOException {
      int linha = 0, coluna = 0, i = 0, n = 0, m = 0;
      String temp, aux, vetor[];

      try {
            //String matriz[][];
            FileReader fr = new FileReader("D:/Facul/8ºPeriodo/TD/Implementacao/iris.data");//Lê o arquivo
            BufferedReader br = new BufferedReader(fr); //Responsável por ler arquivo
            
            aux = br.readLine(); //armazenando linha para posterior contagem de tamanho
            while ((temp = br.readLine()) != null) {
              linha += 1;
              vetor  = temp.split(",");
              System.out.println("Conteúdo do vetor -> " + vetor + "\n"); //Imprimindo o conteúdo do arquivo (linha por linha)
            }
            br.close();

            File arquivoLeitura = new File("D:/Facul/8ºPeriodo/TD/Implementacao/iris.data");
            // pega o tamanho
            long tamanhoArquivo = arquivoLeitura .length();
            FileInputStream fs = new FileInputStream(arquivoLeitura);
            DataInputStream in = new DataInputStream(fs);
            //System.out.println("Tamanho do arquivo -> "+ arquivoLeitura.length() );


            LineNumberReader lineRead = new LineNumberReader(new InputStreamReader(in));
            lineRead.skip(tamanhoArquivo);
            // conta o numero de linhas do arquivo, começa com zero, por isso subtrai-se 1
            linha = lineRead.getLineNumber() -1;
            coluna = aux.length();
            System.out.println("O ARQUIVO CONTEM " + linha + " LINHAS E "+ coluna + " COLUNAS.");

            
        }

        catch (FileNotFoundException e1) {
             System.out.println("Não foi possível abrir o arquivo!");
         }

    }

}

Conteúdo do arquivo:
5.1,3.5,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,1.3,0.2
4.6,3.1,1.5,0.2
5.0,3.6,1.4,0.2
5.4,3.9,1.7,0.4
4.6,3.4,1.4,0.3
5.0,3.4,1.5,0.2
4.4,2.9,1.4,0.2
4.9,3.1,1.5,0.1
5.4,3.7,1.5,0.2
4.8,3.4,1.6,0.2
4.8,3.0,1.4,0.1
4.3,3.0,1.1,0.1
5.8,4.0,1.2,0.2
5.7,4.4,1.5,0.4
5.4,3.9,1.3,0.4
5.1,3.5,1.4,0.3
5.7,3.8,1.7,0.3
5.1,3.8,1.5,0.3
5.4,3.4,1.7,0.2
5.1,3.7,1.5,0.4
4.6,3.6,1.0,0.2
5.1,3.3,1.7,0.5
4.8,3.4,1.9,0.2
5.0,3.0,1.6,0.2
5.0,3.4,1.6,0.4
5.2,3.5,1.5,0.2
5.2,3.4,1.4,0.2
4.7,3.2,1.6,0.2
4.8,3.1,1.6,0.2
5.4,3.4,1.5,0.4
5.2,4.1,1.5,0.1
5.5,4.2,1.4,0.2
4.9,3.1,1.5,0.1
5.0,3.2,1.2,0.2
5.5,3.5,1.3,0.2

1 Resposta

gpd38

Acho que este seu problema seria uma matriz esparsa

De uma olhadahttp://www.guj.com.br/posts/list/69095.java

Criado 2 de maio de 2010
Ultima resposta 2 de mai. de 2010
Respostas 1
Participantes 2