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!

Entendi +/-, vê se isso funciona e se é isso que vc quer:

public float MediaAritmetica (Vector entrada, boolean escreve) {
     float temp = null;
     for (int i = 0; i < ((Float)entrada.elementAt(0)).floatValue(); i++) {
         temp += ((Float)entrada.elementAt(i)).floatValue();
     }
     float resultado = temp;
 }

Espero que tenha ajudado!
Abraços

public float MediaAritmetica(Vector entrada, boolean escreve) { float temp = 0; for (int i = 0; i < ((float)entrada.elementAt(0)).floatValue(); i++) { temp += ((float)entrada.elementAt(i)).floatValue(); if (escreve) { System.out.println(new StringBuffer().append("# ").append(i).append(" -> ").append(temp).toString()); } } return temp; }
O erro ainda permanece: ele não consegue fazer o Cast de Object para float.

bentrada.elementAt(0)[/b]
bentrada.elementAt(i)[/b]

Aqui em casa funcionou.
Vc digitou errado, não é float é Float entre parênteses, como Objeto mesmo.

import java.util.Random;
import java.util.Vector;

public class teste 
{
	static Vector vet = new Vector();
	
	public teste()
	{
			Random rand = new Random(100);
			
			for ( int i = 0 ; i < 5 ; i++ )
			{
				vet.addElement( new Float(rand.nextFloat()) );
			}
	}
	   public float MediaAritmetica(Vector entrada, boolean escreve) {
        float temp = 0;
        for (int i = 0; i < ((Float)entrada.elementAt(0)).floatValue(); i++) {
            temp += ((Float)entrada.elementAt(i)).floatValue();
            if (escreve) {
                System.out.println(new StringBuffer().append("# ").append(i).append(" -> ").append(temp).toString());
            }
        }
        return temp;
    }
	public static void main(String[] args) 
	{
		teste t = new teste();
		t.MediaAritmetica(vet, true);
	}
}

Roda o exemplo que eu fiz e ve o que está faltando pra vc. Este exemplo está perfeito, aqui rodou, acabei de fazer.
Qq dúvida me avisa.

Rodrigo!

por favor, de uma verificada no forum java avancado, tem um topico com o mesmo assunto que postei aqui.

verifica minha classe la… ve se acha o erro meu… to mto brabo ja com essa coisa que ta me trancando tudo…

valeu!

[code]/**

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

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

public class Teste {

public Vector ReadStream(String filename, boolean print) throws IOException {
    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 MediaAritmetica(Vector entrada, boolean escreve) {
    float temp = 0;
    float result = 0;
    for (int i = 0; i < ((Float) entrada.elementAt(0)).floatValue(); i++) {
        temp += ((Float) entrada.elementAt(i)).floatValue();
        if (escreve) {
            System.out.println(new StringBuffer().append("# ").append(i).append(" -> ").append(temp).toString());
        }
    }
    result = temp / ((Float) entrada.elementAt(0)).floatValue();
    return result;
}

public static void main(String[] args) throws IOException {
    Teste t = new Teste();
    t.MediaAritmetica(t.ReadStream("entrada.txt", true), true);
}

}

/**

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

Dá erro na execução… :cry:

Resolvido o problema.
Me desculpe pela demora é que tive que ir para a faculdade ontem a noite.

O problema é que quando vc pegava de um arquivo que no caso era o entrada.txt, transformava em um Vector só que em vetor de Strings, por isso o problema de Cast de String para Float.

Então mechi no seu código e ficou assim.

    public float MediaAritmetica(Vector entrada, boolean escreve) {
        float temp = 0;
        float result = 0;
        
        for (int i = 0; i < Float.parseFloat((String) entrada.elementAt(0)); i++) {
            temp += Float.parseFloat((String) entrada.elementAt(i));
            if (escreve) {
                System.out.println(new StringBuffer().append("# ").append(i).append(" -> ").append(temp).toString());
            }
        }
        result = temp / Float.parseFloat((String) entrada.elementAt(0));
        return result;
    }

Espero que seja isso o que vc queria.
Um abraço.

(Float.valueOf(content.elementAt(i).toString())).floatValue();

Obrigado pela Solução, acabei encontrando uma outra forma de resolver meu problema, que realmente era nessa mudanca de String, que não havia me dado por conta.

Obrigado a todos que contribuiram nesse tópico, num único dia foi produtivo o conteúdo e resolvido o problema. :slight_smile: