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.
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.