Tengo que hacer un ejercicio de un pluviómetro, en el que creo yo mismo las precipitaciones, con un random, y luego tengo que mostrar las medias, total.. de cada mes.
Mi problema es que no sé como hacer referencia al mes. Es decir, tengo un interface con todos los meses. Y por ejemplo, cuando hago la media del mes, no sé como hacer referencia al mes que quiero, ya que estos datos estan en hashmap.
Les pongo el código de todo:
La clase meses:
Código HTML:
public interface Meses { public static final String ENERO="ENERO"; public static final String FEBRERO="FEBRERO"; public static final String MARZO="MARZO"; public static final String ABRIL="ABRIL"; public static final String MAYO="MAYO"; public static final String JUNIO="JUNIO"; public static final String JULIO="JULIO"; public static final String AGOSTO="AGOSTO"; public static final String SEPTIEMBRE="SEPTIEMBRE"; public static final String OCTUBRE="OCTUBRE"; public static final String NOVIEMBRE="NOVIEMBRE"; public static final String DICIEMBRE="DICIEMBRE"; }
Código HTML:
import java.util.HashMap; import java.util.LinkedList; public class Pluviometro { // Atributos de la clase private HashMap aljibe; LinkedList precipitaciones=new LinkedList(); // Constructor public Pluviometro() { aljibe=new HashMap(); aljibe.put(Meses.ENERO, new Probeta()); aljibe.put(Meses.FEBRERO, new Probeta()); aljibe.put(Meses.MARZO, new Probeta()); aljibe.put(Meses.ABRIL, new Probeta()); aljibe.put(Meses.MAYO, new Probeta()); aljibe.put(Meses.JUNIO, new Probeta()); aljibe.put(Meses.JULIO, new Probeta()); aljibe.put(Meses.AGOSTO, new Probeta()); aljibe.put(Meses.SEPTIEMBRE, new Probeta()); aljibe.put(Meses.OCTUBRE, new Probeta()); aljibe.put(Meses.NOVIEMBRE, new Probeta()); aljibe.put(Meses.DICIEMBRE, new Probeta()); } // Métodos protected void putPrecipitacion(String m,int litros) { precipitaciones.add(litros,m); } protected String getPrecipitaciones(String m) { String s=""; for(int i=0; i<=100000; i++){ s+=precipitaciones.get(i) + " "; } return s; } protected int totalMes(String m) { int litros=0; for(int i=0; i<=30; i++){ // litros=litros+precipitaciones.get(i); // litros=precipitaciones.get(i) +litros; } return litros; } protected int mediaDiaria(String m) { return Math.round(totalMes(m)/30); } protected int mediaMensual(String m){ return 0; } }
Código HTML:
public class Ejercicio8 { public static void main(String args[]){ Pluviometro p=new Pluviometro(); // Código para insertar datos de forma aleatoria String[] meses={Meses.ENERO, Meses.FEBRERO, Meses.MARZO, Meses.ABRIL, Meses.MAYO, Meses.JUNIO,Meses.JULIO, Meses.AGOSTO, Meses.SEPTIEMBRE,Meses.OCTUBRE, Meses.NOVIEMBRE, Meses.DICIEMBRE}; int mes; int litros; for(int i=0; i<50; i++) { mes=(Integer.valueOf(Double.toString(Math.random()).substring(2,4))%12); litros=Integer.valueOf(Double.toString(Math.random()).substring(2,4)); p.putPrecipitacion(meses[mes], litros); } // FIN de generación aleatoria // Visualización de datos for(int i=0; i<12; i++) { System.out.println(meses[i] + ": " + p.getPrecipitaciones(meses[i]) + " Total mensual: " + p.totalMes(meses[i]) + " Media diaria: " + p.mediaDiaria(meses[i])); } System.out.println("-------------------------------------------"); //System.out.println("Total anual: " + p.totalAnual() // + " Media mensual: " + p.mediaMensual()); } }
Si tienen algun duda frente al ejercicio, me lo pueden comunicar.
También, me crea este error:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 84, Size: 0
Muchas gracias, y espero sus respuestas.