Foros del Web » Programación para mayores de 30 ;) » Java »

Problema Arreglo en metodo

Estas en el tema de Problema Arreglo en metodo en el foro de Java en Foros del Web. Pues este es mi programa, se trata de obtener una varianza, el error se encuentra en que cuando quiero guardar el valor del vector en ...
  #1 (permalink)  
Antiguo 15/09/2011, 00:46
 
Fecha de Ingreso: septiembre-2011
Ubicación: Agua Dulce
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Problema Arreglo en metodo

Pues este es mi programa, se trata de obtener una varianza, el error se encuentra en que cuando quiero guardar el valor del vector en una variable global que es la variable total, al momento de definir el arreglo al tamaño de total, el arreglo se queda en 0, y no pued guardar nada, les dejo el codigo necesito ayuda, he tratado por 2 dias y nada que puedo grax.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
: Si x representa la media de los números x1, x2,…, xn, entonces la varianza es
* la media de los cuadrados de las desviaciones de los números de la media.

*Y la desviación estándar es la raíz cuadrada dela varianza. Diseñe un programa
* que lea una lista de números reales, los cuente y a continuación calcule e imprima
* su media, varianza y desviación estándar.

*/

public class Varianza
{


int total;
int variables [] = new int [total];
double [] valorcuadvar = new double [variables.length];
int tamaño=variables.length;
int media;
double suma,resta;
double desviacion,varianza;


public void total()throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Numero de Variables: ");
total=Integer.parseInt(in.readLine());

}

public void captura()throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

varianza= suma + total;

for(int i=0;i<variables.length;i++)

{

System.out.print("variable:+ ");
int var=Integer.parseInt(in.readLine());
variables[i] = var;
}

}

public void arreglo()
{
for(int i=0;i<variables.length;i++)
{
suma=variables[i]+suma;
}
}

public void media()
{
media=(int) (suma/tamaño);
System.out.print("Media: "+media+"\n\n");
}
public void varianza_paso1()
{
for(int j=0;j<valorcuadvar.length;j++)
{
resta=variables[j]-media;
valorcuadvar[j]=Math.pow(resta,2);
}
}
public void suma_varianza()
{
for(int k=0;k<valorcuadvar.length;k++)
{
suma = suma+valorcuadvar[k];
}
}
public void varianza_total()
{
varianza=suma/tamaño;
System.out.print("Varianza: "+varianza+"\n\n");
}
public void desviacion()
{
desviacion=Math.sqrt(varianza);
System.out.print("Desviacion Stnr: "+desviacion+"\n\n");
}
public static void main(String [] args ) throws IOException
{
Varianza_pollo varianza = new Varianza();
varianza.total();
varianza.captura();
varianza.arreglo();
varianza.media();
varianza.varianza_paso1();
varianza.suma_varianza();
varianza.varianza_total();
varianza.desviacion();
}


}
  #2 (permalink)  
Antiguo 15/09/2011, 01:09
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema Arreglo en metodo

El problema es que tienes que crear un método constructor de varianza que utilice Total como parámetro y haga el set de todos los valores.

public Varianza(int total) {
this.total = total;
//creo que llegaría con esto
}

Para eso es necesario sacar el método total fuera de la clase o tenerlo dentro de la propia clase y hacerlo estático. En este caso.

public static int total()throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
return Integer.parseInt(in.readLine());
}

Así en el main

public static void main(String [] args ) throws IOException
{
int numValores = Varianza.total();
Varianza varianza = new Varianza(numValores);
varianza.captura();
varianza.arreglo();
varianza.media();
varianza.varianza_paso1();
varianza.suma_varianza();
varianza.varianza_total();
varianza.desviacion();
}

Y llamarlo antes de instanciar la clase

Última edición por Fuzzylog; 15/09/2011 a las 01:17
  #3 (permalink)  
Antiguo 15/09/2011, 01:27
 
Fecha de Ingreso: septiembre-2011
Ubicación: Agua Dulce
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema Arreglo en metodo

Oye gracias pro existe un nuevo problema que no te entendi bueno la verdd no se dond poner lo que me diiste, la verdd es que es uno de los primeros programas que realizo, me podrias orientar un poco mas gracias.
  #4 (permalink)  
Antiguo 15/09/2011, 01:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema Arreglo en metodo

El constructor de la clase va dentro de la propia clase debajo de sus atributos.

El método total() donde lo tenías, pero con los cambios que te indiqué (aunque puedes mantener el println).

El main donde iba, sólo que antes de crear el objeto varianza llamas al método de clase total() y lo vuelcas en la variable numValores, que es la que utilizas para construir la varianza.

de todos modos ya que lo veo, las variables tampoco las puedes definir de esa manera, me refiero a los arreglos. Simplemente defínelos en la clase y luego dentro del constructor:
*
this.variables = new int [total];
this.valorcuadvar = new double [variables.length]; // ¿uh, variables.length no es total?
this.tamaño=variables.length; // Si es total esto sobraría, ya que el tamaño sería el total de valores ingresados
*

es decir, que el constructor sería realmente

public Varianza(int total) {
this.total = total;
this.variables = new int [total];
this.valorcuadvar = new double [total];
}

y donde tengas tamaño lo sustituyes por total, pq realmente sería una variable duplicada.
  #5 (permalink)  
Antiguo 15/09/2011, 01:58
 
Fecha de Ingreso: septiembre-2011
Ubicación: Agua Dulce
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema Arreglo en metodo

oye y donde pusiste esto que hago por que como guardo en cada posicion del arreglo, por que asi no me guarda nada

public static int total()throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
return Integer.parseInt(in.readLine());
}

o si me guarda
  #6 (permalink)  
Antiguo 15/09/2011, 02:03
 
Fecha de Ingreso: septiembre-2011
Ubicación: Agua Dulce
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema Arreglo en metodo

ya quedo muchas gracias amigo, la neta no podia dormir por este problema muchas gracias uffff

Etiquetas: metodo, arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:35.