Um método que recebe como parâmetro um Vector, e preciso utilizar os elementos desse vetor num calculo.
public float MediaAritmetica (Vector entrada, boolean escreve) {
float temp = null;
for (int i = 0; i < ValorDoPrimeiroElementoDoVetor; i++) {
temp + entrada.elementAt(i);
}
float resultado = temp;
}
Tentativa: utilizar o valor do primeiro elemento do vetor num laço de repetição, somando os elementos seguintes desse vetor, de acordo com o número de vezes identificado no laço criado.
Exemplo: se a primeira posição do vetor contem “5”, então ele pegara os próximos 5 elementos do vetor e somará dentro do laço criado.
publicfloatMediaAritmetica(Vectorentrada,booleanescreve){
floattemp=0.0f;floatValorDoPrimeiroElementoDoVetor=(float)entrada.get(0);for(inti=1; i < ValorDoPrimeiroElementoDoVetor; i++) {temp=temp+((float)entrada.get(i));}
retuntemp;
}
leonardorcortes
publicfloatMediaAritmetica(Vectorentrada,booleanescreve){
floattemp=0.0f;intValorDoPrimeiroElementoDoVetor=(int)entrada.get(0);for(inti=1; i < ValorDoPrimeiroElementoDoVetor; i++) {temp=temp+((float)entrada.get(i));}
returntemp;}
1o. Erro (CAST): (int)entrada.get(0) não pode converter de Object para int
2o. Erro (CAST): (float)entrada.get(i) não pode converter de Object para float
Aguardo retorno!
legionarioba
publicfloatMediaAritmetica(Vectorentrada,booleanescreve){
floattemp=0.0f;intValorDoPrimeiroElementoDoVetor=((Integer)entrada.get(0)).intValue();for(inti=1; i < ValorDoPrimeiroElementoDoVetor; i++) {temp=temp+((Float)entrada.get(i)).floatValue();}
returntemp;}
Você não pode converter Object em um tipo primitivo Você pode usar a classe Wrapper Float pra poder usar o Cast de Object, e então pegar seu valor primitivo pelo método floatValue(), ai só alegria (O mesmo raciocínio pra int/Integer, double/Double…)
leonardorcortes
ArithmeticProcess.java
/** * @author Leonardo Reis Cortes * @version 1.0.0 * @date 29/03/2005 */importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importjava.util.Vector;publicclassArithmeticProcess{publicVectorReadStream(Stringfilename,booleanprint)throwsIOException{/** * ReadStream(String filename, boolean print) * * método utilizado para capturar dados de um arquivo texto. * true -> armazena e escreve na janela console o valor capturado. * false -> apenas armazena o valor capturado para uso posterior. */FileReaderinput=newFileReader(newFile(filename));BufferedReaderreader=newBufferedReader(input);Stringline=null;Vectorcontent=newVector();for(inti=0;reader.ready();i++){line=reader.readLine().toString();content.add(line);if(print){System.out.println(newStringBuffer().append("#").append(i).append(" -> ").append(line).toString());}}reader.close();input.close();returncontent;}publicfloatArithmeticMean(Vectorcontent,booleanprint){/** * ArithmeticMean (Vector content, boolean print) * * método utilizado para calcular a média aritmética de valores armazenados num vetor. * * 1a. posição do vetor informa o numero de elementos a serem utilizados no calculo. * true -> armazena e escreve na janela console o valor capturado. * false -> apenas armazena o valor capturado para uso posterior. */floattemp=0.0f;floatresult=0.0f;intlimit=((Integer)content.get(0)).intValue()+1;for(inti=1;i<limit;i++){temp+=((Float)content.get(i)).floatValue();if(print){System.out.println(newStringBuffer().append("# ").append(i).append(" -> ").append(temp).toString());}}result=temp/limit;returnresult;}publicstaticvoidmain(String[]args)throwsIOException{ArithmeticProcessMeanTest=newArithmeticProcess();MeanTest.ArithmeticMean(MeanTest.ReadStream("Input.txt",true),true);}}/** * Copyright (c) 2005 Leonardo Reis Cortes. All rights reserved. */
Input.txt
278
Bom, essa ai é minha classe! Parece tudo ok, até a parte onde tenho que converter os Objects do vector para floats e integers.
Se alguem puder ajudar, agradeço desde já!
David
leonardo, o problema está nesta linha aqui:
intlimit=((Integer)content.get(0)).intValue()+1;
Você colocou Floats no seu vetor e está tentando fazer o cast para Integer. Uma solução para isso é você não fazer este cast, e sim utilizar o método intValue() da classe Float.
intlimit=((Float)content.get(0)).intValue()+1;
Agora observe que o imprimir só está servindo para imprimir os números do vetor. A média não está sendo impressa.