Ir ao conteúdo

(Iniciante) Vector para array


Victor Machado

Posts recomendados

Postado

Bom, eu quero uma ajudinha, um pontapé. Eu terei que fazer uns cálculos com uns números, os quais estão armazenados em um vetor. Fiz primeiro o teste e coloquei os numeros a mao pra ver se o metodo está ok, e tudo certo. O problema é que rão me dar arquivos txt que servrão de entrada. Eu já vi como ler txt. O problema tá send ofazer que o meu vetor pegue esses valores. Está assim:

package testqui;
import java.util.Scanner;
import java.io.*;
import java.util.*;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
/**
* * @author victor
*/
public class testqui {

public testqui() throws IOException {

//abertura de arquivo
File arquivo = new File("c:/text.txt");
FileReader entrada = new FileReader(arquivo);
BufferedReader ler = new BufferedReader(entrada);
Vector vetor = new Vector();
String linha = null;

for (int i = 0; ler.ready(); i++) {
linha = ler.readLine().toString();
double dados = Double.parseDouble(linha);
vetor.add(dados);
System.out.printf("Dados do Vetor: %s\n", vetor);

ler.close();
Vector Fob= new Vector();
Fob.add(vetor); //<-------???
}
}
public static void main(String[] args){


double Fob[]= {315,142,40,9,2,1}; //<<<---Aqui tem que ser os dados de entrada lidos do txt
double x2;
double mediaPond1 = 0;
double mediaPond = 0;
double Fesp[] = new double[Fob.length];
//double DP[] = new double[Fob.length];
double DP[] = {0.5976, 0.307, 0.0795, 0.0135, 0.0017, 0.0001} ;//será calculado em cima dos dados de entrada
double soma=0;

System.out.print(" i Fob[i]: \n");
for(int i=0;i<Fob.length;i++)
{
double md = Fob[i];
mediaPond1=(md*i)+mediaPond1;
//DP = densidade probabilidade

System.out.printf(" %s %s; i x Fob = %s\n", i, Fob[i],i*Fob[i]);
soma = soma + Fob[i];
}
System.out.printf(" Total: ------------%s\n\n",mediaPond1);
mediaPond=mediaPond1/soma;
System.out.printf("Valor da média Ponderada: \n%f\n\n",mediaPond);


x2=0; //Chi-square
for(int j=0;j<(Fob.length); j++){
Fesp[j]=(soma)*DP[j]; //calcula frequencia esperada
System.out.printf("Fesp atual: \n%f\n\n",Fesp[j]);
x2 = (Math.pow(Fob[j]-Fesp[j],2)/Fesp[j]) + x2; //valor esperado

System.out.printf("Qui-Quadrado dinâmico: %f\n\n",x2);

}
System.out.printf("Qui-Quadrado calculado: %f\n\n\n",x2);
}
/**
* @param args the command line arguments
*/
// TODO code application logic here

}

  • Membro VIP
Postado

Vi um erro no construtor de testqui. No laço for você está fechando o BufferedReader antes de concluir a leitura do arquivo de fato. Mova ler.close() para fora do laço for e teste aí.

Abraços.

Postado

Oi, consegui fazer modificações, e armazenar os dados em um Vector. Agora, gostaria de converter meu Vector para um array do tipo double, para fazer as operaçõs necessárias.

...

...

public static void main(String[] args) throws IOException
{
//double Fob[]= {315,142,40,12}; os dados como dever ser usados (mas serao carregados a partir de txt

double x2;
double mediaPond1 = 0;
double mediaPond = 0;
double DP[] = new double[Fob.length];
double Fesp[] = new double[Fob.length];
double e = 2.71828;
double fat;
Vector a = new Vector();

int n;
int x;


FileReader inputFile = new FileReader("C:/Documents and Settings/LPRAD/Desktop/dados.txt");
BufferedReader leitor = new BufferedReader(inputFile);
// FileReader in = new FileReader(inputFile);
String c;

while((c=leitor.readLine())!=null)
{
a.add(c);
}
leitor.close();

System.out.printf(" a: %s\n",a);

//ESSE 'a' PASSARÁ A SER MEU VETOR DOUBLE FOB, COMENTADO ACIMA

Postado

Acredito que é mais fácil manter o Vector e ir transformando cada item em double em tempo de execução, ficaria assim


double valor = Double.parseDouble(a.get(posicao).toString());

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!