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.
[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
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 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…)
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);
}
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.