Foro sobre Java SE > Trabajar con arrays.
Puedes ordenar una copia del array, no necesariamente el original.
Una vez que sabes cuáles son esos valores máximo y mínimo, ya es fácil obtener el mes a que pertenecen.
Buenas,
To no veo que tengas que ordenar nada.
Creas cinco variables. Una para almacenar el maximo, otra para el indice del maximo, otra para almacenar el minimo, otra para el indice del minimo y otra para almacenar el total acumulado de valores.
Recorres el array de valores con un for. En cada iteracion:
-Si el valor es mayor que el maximo lo asignamos a la variable de maximo y actualizamos el indice correspondiente
-Si el valor es menor que el minimo lo asignamos a la variable de minimo y asignamos el indice correspondiente.
-Acumulamos el valor en la variable de acumulacion.
Cuando termine el bucle ya tenemos el acumulado junto con los indices de maximo y minimo. Aplicamos estos indices sobre el array de meses para obtener el nombre del mes correspondiente. Para el valor medio hacemos: acumulado/12
Un saludo
Por si estás muy perdido, sigue un test.
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
final int[] meses = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
final int[] valores = {20, 50, 30, 40, 80, 120, 70, 90, 100, 130, 10, 60};
final int[] valoresOrdenados = Arrays.copyOf(valores, valores.length);
Arrays.sort(valoresOrdenados);
System.out.println("ordenados: " + Arrays.toString(valoresOrdenados));
final int maximo = valoresOrdenados[valoresOrdenados.length - 1];
final int minimo = valoresOrdenados[0];
System.out.println("máximo: " + maximo);
System.out.println("mínimo: " + minimo);
int suma = 0;
int mesMaximo = 0;
int mesMinimo = 0;
for (int i = 0; i < valores.length; i++) {
if (maximo == valores[i]) {
mesMaximo = meses[i];
}
if (minimo == valores[i]) {
mesMinimo = meses[i];
}
suma += valores[i];
}
System.out.println("mes máximo: " + mesMaximo);
System.out.println("mes mínimo: " + mesMinimo);
System.out.println("media: " + suma / 12);
}
}
Perdonad mi retraso. Lo he arreglado de la siguiente manera:
float mayor;
int posmayor;
mayor=valorDolar[1];
posmayor=1;
for(int min=1;min<mesos.length;min++) {
if (valorDolar[min]>mayor) {
mayor=valorDolar[min];
posmayor=min;
}
}
//Buscamos valor máximo del año
System.out.println("\nValor maximo Euro/dolar:" );
System.out.println("Mes: "+mesos[posmayor]);
System.out.println("Valor:"+mayor);
float menor;
int posmenor;
menor=valorDolar[1];
posmenor=1;
for(int max=1;max<mesos.length;max++) {
if (valorDolar[max]<menor) {
menor=valorDolar[max];
posmenor=max;
}
}
//Buscamos valor mínimo del año
System.out.println("\nValor mínim Euro/dolar:");
System.out.println("Mes: "+mesos[posmenor]);
System.out.println("Valor:"+menor);
float sumar=0;
int pos=1;
for(int media=1;media<valorDolar.length;media++) {
sumar += valorDolar[media];
pos++;
}
//Buscamos valor medio del año
System.out.print("\nValor mitjà del Euro/dolar al 2012 :"+ df.format(sumar/12) +"\n");
}
Muchas gracias,
Hola a todos,
Me han propuesto hacer un ejercicio que me resulta bastante dificil.
Tengo dos arrays uno con los meses del año y otro el valor de cada mes.
He de sacar el valor min y max de cada mes, y el promedio del año entero.
Valor mínimo del array:
Mes: ....
Valor maximo del array:
Mes: ....
Valor medio del año : ...
Había pensado hacer una reordenación del array de valores de menor a mayor, pero luego no podrias ordenar los meses.
No se otra manera de hacerlo.
Alguién podría hecharme una mano?
Muchas gracias,