Hola a todos,
El viernes tuve examen de programación y uno de los ejercicios fue hacer un programa que pidiese 5 numeros y diese la diferencia entre el mayor y el menor.
Si ocurría una excepción por ejemplo el ingreso de un caracter diese: 0 si era el primer numero ingresado, sino la media de los ingresados anteriormente convertida a entero.
Yo puse el código de más abajo y compila pero no funciona bien, sin embargo cambiando el for del catch "for(j=i-1; j>=0; j--)" por este otro: "for(j=0; j<i; j++)", funciona a la perfección y no entiendo el porqué y aunque lo preguntaré en clase si alguien lo sabe me gustaría saber el porqué.
public class Ex1vMala
{
public static void main (String[]args)
{
int[] los5numeros = new int [5];
int media, aux, total, i, j;
for(i=0; i<los5numeros.length; i++)
{
try
{
los5numeros[i]=Leer.entero();
}
catch (Exception ex)
{
if (i==0) los5numeros[i]=0;
else for(j=i-1; j>=0; j--) {media=media+los5numeros[j];} los5numeros[i]=(int)(media/j);}
}
}
for(i=0; i<los5numeros.length-1; i++)
for(j=i+1; j<los5numeros.length; j++)
if(los5numeros[j]>los5numeros[i]) {aux=los5numeros[i]; los5numeros[i]=los5numeros[j]; los5numeros[j]=aux;}
total=(los5numeros[0]-los5numeros[4]);
System.out.println("La mayor diferencia es: "+total);
}
}