Vector para float

Olá!

Tenho o seguinte problema:

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.

Agradeço desde ja!

era isso?

public float MediaAritmetica (Vector entrada, boolean escreve) {
     float temp = 0.0f;
     float ValorDoPrimeiroElementoDoVetor = (float) entrada.get(0);
     
     for (int i = 1; i < ValorDoPrimeiroElementoDoVetor; i++) {
         temp = temp + ((float)entrada.get(i));
     }
     retun temp;
}

[code] public float MediaAritmetica (Vector entrada, boolean escreve) {
float temp = 0.0f;
int ValorDoPrimeiroElementoDoVetor = (int)entrada.get(0);

      for (int i = 1; i < ValorDoPrimeiroElementoDoVetor; i++) {
          temp = temp + ((float)entrada.get(i));
      }
      return temp;
 }[/code]

1o. Erro (CAST): bentrada.get(0)[/b] não pode converter de Object para int
2o. Erro (CAST): bentrada.get(i)[/b] não pode converter de Object para float

Aguardo retorno!


    public float MediaAritmetica (Vector entrada, boolean escreve) {
        float temp = 0.0f;
        int ValorDoPrimeiroElementoDoVetor = ((Integer)entrada.get(0)).intValue();

        for (int i = 1; i < ValorDoPrimeiroElementoDoVetor; i++) {
            temp = temp + ((Float)entrada.get(i)).floatValue();
        }
        return temp;
   }

Você não pode converter Object em um tipo primitivo :slight_smile: 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 :slight_smile: (O mesmo raciocínio pra int/Integer, double/Double…)

ArithmeticProcess.java

[code]/**

  • @author Leonardo Reis Cortes
  • @version 1.0.0
  • @date 29/03/2005
    */

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;

public class ArithmeticProcess {

public Vector ReadStream(String filename, boolean print) throws IOException {
    /**
     * 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.
     */
    FileReader input = new FileReader(new File(filename));
    BufferedReader reader = new BufferedReader(input);
    String line = null;
    Vector content = new Vector();

    for (int i = 0; reader.ready(); i++) {
        line = reader.readLine().toString();
        content.add(line);
        if (print) {
            System.out.println(new StringBuffer().append("#").append(i).append(" -> ").append(line).toString());
        }
    }
    reader.close();
    input.close();
    return content;
}

public float ArithmeticMean(Vector content, boolean print) {
    /**
     * 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.
     */
    float temp = 0.0f;
    float result = 0.0f;
    int limit = ((Integer) content.get(0)).intValue() + 1;

    for (int i = 1; i < limit; i++) {
        temp += ((Float) content.get(i)).floatValue();
        if (print) {
            System.out.println(new StringBuffer().append("# ").append(i).append(" -> ").append(temp).toString());
        }
    }
    result = temp/limit;
    return result;
}

public static void main (String[] args) throws IOException {
    ArithmeticProcess MeanTest = new ArithmeticProcess();
    MeanTest.ArithmeticMean(MeanTest.ReadStream("Input.txt",true),true);
}

}

/**

  • Copyright © 2005 Leonardo Reis Cortes. All rights reserved.
    */[/code]

Input.txt

2 7 8

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á!

leonardo, o problema está nesta linha aqui:

int limit = ((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.

int limit = ((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.

Abraços.