• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Andrer757

Leitura de ficheiros

3 mensagens neste tópico

Boas pessoal,

estou aqui com um pequeno problema, eu tenho um ficheiro de texto com o seguinte formato:

200 3

  3.10575    8.65176 2

  3.60623    7.79335 2

  4.49634  10.16057 2

.........

e precisava de por os doubles num vector bidimencional double[][] referencia = new double[total de linhas do ficheiro][2(porque sao dois doubles por linha)] e de pegar nos inteiros de cada linha e colocar num vector de inteiros sendo que a 1ª linha do ficheiro indica o numero de linhas e o numero de colunas.

O meu problema é que não consigo estrair os dados do ficheiro para os vectores.

isto foi o que fiz apesar de não funcionar:

Scanner file = new Scanner( new FileReader("referencia.dat"));
double[][] referencia = new double[file.nextInt()][2];
file.nextLine();
for (int a = 0;a < referencia.length;a++) {
      for (int b = 0;b < referencia[a].length && file.hasNextDouble();b++)
            referencia[a][b] = file.nextDouble();
      file.nextLine();
}

thanks.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Scanner file = new Scanner( new FileReader("referencia.dat"));
double[][] referencia = new double[file.nextInt()][2];
for (int a = 0;a < referencia.length;a++) {
      for (int b = 0;b < referencia[a].length && file.hasNextDouble();b++)
            referencia[a][b] = file.nextDouble();
}

Tenta assim acho que interpretas-te mal o scanner ao fazer nextLine ele retorna uma String com a linha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Scanner file = new Scanner( new FileReader("referencia.dat"));
double[][] referencia = new double[file.nextInt()][2];
for (int a = 0;a < referencia.length;a++) {
      for (int b = 0;b < referencia[a].length && file.hasNextDouble();b++)
            referencia[a][b] = file.nextDouble();
}

Tenta assim acho que interpretas-te mal o scanner ao fazer nextLine ele retorna uma String com a linha.

Boas com esse código so guarda 3.0 e mais nada.

mas já solucionei o problema assim:

Scanner file1 =  new Scanner( new File 	("referencia.dat"));
int linhas = file1.nextInt();
double[][] referencia = new double[linhas][2];
int[] especieRef = new int[linhas];
file1.nextLine();
for (int a = 0;a < referencia.length;a++) {
      for (int b = 0;b < referencia[a].length && file1.hasNext();b++)
            referencia[a][b] = new Double(file1.next());
      for (int c = 0;c < especieRef.length && file1.hasNextInt();c++)
            especieRef[c] = new Integer(file1.nextInt());
      file1.nextLine();
}

Obrigado na mesma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora