media de arrays

Iniciado por fprg, 16 Noviembre 2013, 22:52 PM

0 Miembros y 2 Visitantes están viendo este tema.

fprg

estoy aprendiendo a prgramar en java
necesito saber como puedo calcular la media de una serie de arrays, pero si en la posicion N del array no hay un valor establecido, tengo que hacer la media solo son los valores anteriores a ese.

Mitsu

#1
Código (=java) [Seleccionar]

package javase.arrays.media;

import java.util.Scanner;

public class MediaArray {

private int[] numeros;
private int condicion;

public MediaArray() {
llenarArray();
}

private void llenarArray() {
               Scanner into = new Scanner(System.in);
System.out.println("Cuantos valores desea procesar?");
int tamanio = into.nextInt();
System.out.println("Numero condicion para que se detenga la suma:");
condicion = into.nextInt();

numeros = new Int[tamanio];

System.out.println("Ingrese los numeros uno a uno.");
for (short i=0; i < tamanio; i++) {
numeros[i] = into.nextInt();
}
}

private float encontrarMedia() {
float suma = 0;

for (int i : numeros) {
if (i == condicion) {
break;
}
suma += (float) i;
}

return suma/numeros.length;
}

public static void main (String... args) {

MediaArray media = new MediaArray();
System.out.println("La media de los numeros ingresados es:\t" + media.encontrarMeda());
}

}


Nada del otro mundo no? A la próxima por lo menos, inténtalo. Esto se trata de razonar, evitar pedir ayuda hasta que sientas que ya no puedes seguir. Algo tan sencillo como ésto, solo se resuelve razonando un poco.

PD: Si aún no ves POO, puedes hacer esto mismo todo en el main.

fprg

es algo mas complicado...
si yo tengo un array de tamanio 4, y solo ingreso dos valores, la media tiene que ser hecha solo con esos 2 valores. Y de esta manera, dividiria entre 4
de todas maneras, GRACIAS por la ayuda

Mitsu

#3
Cita de: fprg en 17 Noviembre 2013, 17:39 PM
si yo tengo un array de tamanio 4, y solo ingreso dos valores, la media tiene que ser hecha solo con esos 2 valores.

Eso es redundante. Para qué entonces creas un arreglo de 'n' posiciones si no vas a utilizar todas las posiciones? Eso va contra la lógica común.

Mejor crea un ArrayList y anda agregando los valores que desees. Luego con un foreach, sumas los valores ingresados y sacas la media con el tamaño establecido. El tamaño se guardará en una variable solo para efectuar la media. En todo caso, no sería media, ya que la media se obtiene dividiendo la suma de un conjunto de valores por la cantidad misma.

Código (=java) [Seleccionar]

package javase.arrays.media;

import java.util.Scanner;

public class MediaArray {

private List<Float> numeros;
private int tamanio = 0;

public MediaArray() {
llenarArray();
}

// Llenar lista con numeros ingresados
private void llenarArray() {
               numeros = new ArrayList<>();
               Scanner into = new Scanner(System.in);
System.out.print("Cantidad de numeros:");
tamanio = into.nextInt();

System.out.print("\nIngrese los numeros uno a uno:");
               System.out.println("\n*** Cuando desee dejar de ingresar teclee -1 ***");
while (true) {
                       float numero = into.nextFloat();
                       if (numero == -1) {
                          break;
                       }
                       else {
                          numeros.add(numero);
                       }
}
}

private float encontrarMedia() {
float suma = 0;

for (float i : numeros) {
suma += i;
}

return suma/tamanio;
}

public static void main (String... args) {

MediaArray media = new MediaArray();
System.out.println("\nLa media de los numeros ingresados es:\t" + media.encontrarMeda());
}

}


Lo hago con ArrayList porque si lo hago con un Array, al obtener los valores del array, obtendría un NullPointerException cuando accediera a las posiciones en donde no se ha agregado nada. Lee ArrayList en la documentación oficial.

fprg

ya se que es algo absurdo pero es lo que me mandan
MUCHAS GRACIAS:)

Mitsu

Jaja si pues, ni modo, solo acatar la tarea xD

Me alegro que te haya servido. Un saludo.

fprg

si que me ha servido :)
tambien necesito crear dos metodos:
- uno para almacenar los datos del array (no vale usar la clase scanner)
-otro para modificar los datos ya almacenados
me podeis ayudar??