elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  mejorar codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mejorar codigo  (Leído 3,515 veces)
winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
mejorar codigo
« en: 20 Diciembre 2014, 22:04 pm »

Vereis estoy intentando sacar este enunciado:
Desarrollar un programa que simule un pluviómetro en el que se van registrando las precipitaciones a lo largo del año. En cualquier momento, se le pueden pedir las medias de un mes concreto o del año completo.

Utilizar constantes para especificar el mes.

Por último, crearemos una clase Actividad8 donde instanciaremos el pluviómetro, registraremos algunas precipitaciones para los distintos meses y mostraremos las medias de precipitación de todos los meses y del año.


Lo he logrado mas o menos, pero me parece que podria estar mucho mas optimizado. He picado demasiado codigo creo yo que repetitivo. Pero no quiero usar la clase hashtable, quiero hacerlo todo de un modo lo mas rudimentario posible, sin usar clases externas. Os pego lo que tengo para ver si alguien me puede decir como mejorarlo y optimizarlo.

Código:
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:
import java.util.ArrayList;

public class Pluviometro implements Meses{
ArrayList<Double> arrayEnero = new ArrayList<Double>();
ArrayList<Double> arrayFebrero = new ArrayList<Double>();
ArrayList<Double> arrayMarzo = new ArrayList<Double>();
ArrayList<Double> arrayAbril = new ArrayList<Double>();
ArrayList<Double> arrayMayo = new ArrayList<Double>();
ArrayList<Double> arrayJunio = new ArrayList<Double>();
ArrayList<Double> arrayJulio = new ArrayList<Double>();
ArrayList<Double> arrayAgosto = new ArrayList<Double>();
ArrayList<Double> arraySeptiembre = new ArrayList<Double>();
ArrayList<Double> arrayOctubre = new ArrayList<Double>();
ArrayList<Double> arrayNoviembre = new ArrayList<Double>();
ArrayList<Double> arrayDiciembre = new ArrayList<Double>();

double precipitacionEnero, precipitacionFebrero, precipitacionMarzo,
precipitacionAbril, precipitacionMayo, precipitacionJunio, precipitacionJulio,
precipitacionAgosto, precipitacionSeptiembre, precipitacionOctubre,
precipitacionNoviembre, precipitacionDiciembre;



public void setPrecipitacion(String m, double precipitacion){
if (m.equalsIgnoreCase("Enero")){
arrayEnero.add(precipitacion);
precipitacionEnero = precipitacion;}

if (m.equalsIgnoreCase("Febrero")){
arrayFebrero.add(precipitacion);
precipitacionFebrero = precipitacion;}

if (m.equalsIgnoreCase("Marzo")){
arrayMarzo.add(precipitacion);
precipitacionMarzo = precipitacion;}

if (m.equalsIgnoreCase("Abril")){
arrayAbril.add(precipitacion);
precipitacionAbril = precipitacion;}

if (m.equalsIgnoreCase("Mayo")){
arrayMayo.add(precipitacion);
precipitacionMayo = precipitacion;}

if (m.equalsIgnoreCase("Junio")){
arrayJunio.add(precipitacion);
precipitacionJunio = precipitacion;}
if (m.equalsIgnoreCase("Julio")){
arrayJulio.add(precipitacion);
precipitacionJulio = precipitacion;}

if (m.equalsIgnoreCase("Agosto")){
arrayAgosto.add(precipitacion);
precipitacionAgosto = precipitacion;}

if (m.equalsIgnoreCase("Septiembre")){
arraySeptiembre.add(precipitacion);
precipitacionSeptiembre = precipitacion;}

if (m.equalsIgnoreCase("Octubre")){
arrayOctubre.add(precipitacion);
precipitacionOctubre = precipitacion;}

if (m.equalsIgnoreCase("Noviembre")){
arrayNoviembre.add(precipitacion);
precipitacionNoviembre = precipitacion;}

if (m.equalsIgnoreCase("Diciembre")){
arrayDiciembre.add(precipitacion);
precipitacionDiciembre = precipitacion;}

}


public double getPrecipitacion(String m){
if (m.equalsIgnoreCase("Enero")){
return precipitacionEnero;}
if (m.equalsIgnoreCase("Febrero")){
return precipitacionFebrero;}
if (m.equalsIgnoreCase("Marzo")){
return precipitacionMarzo;}
if (m.equalsIgnoreCase("Abril")){
return precipitacionAbril;}
if (m.equalsIgnoreCase("Mayo")){
return precipitacionMayo;}
if (m.equalsIgnoreCase("Junio")){
return precipitacionJunio;}
if (m.equalsIgnoreCase("Julio")){
return precipitacionJulio;}
if (m.equalsIgnoreCase("Agosto")){
return precipitacionAgosto;}
if (m.equalsIgnoreCase("Septiembre")){
return precipitacionSeptiembre;}
if (m.equalsIgnoreCase("Octubre")){
return precipitacionOctubre;}
if (m.equalsIgnoreCase("Noviembre")){
return precipitacionNoviembre;}
return precipitacionDiciembre;
}

public double precipitacionMedia(String m){
double precipitacionTotal = 0;

if (m.equalsIgnoreCase("Enero")){
for (int a=0; a < arrayEnero.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayEnero.get(a);
}
return precipitacionTotal/31;}

if (m.equalsIgnoreCase("Febrero")){
for (int a=0; a < arrayFebrero.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayFebrero.get(a);
}
return precipitacionTotal/28;}

if (m.equalsIgnoreCase("Marzo")){
for (int a=0; a < arrayMarzo.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayMarzo.get(a);
}
return precipitacionTotal/31;}

if (m.equalsIgnoreCase("Abril")){
for (int a=0; a < arrayAbril.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayAbril.get(a);
}
return precipitacionTotal/30;}

if (m.equalsIgnoreCase("Mayo")){
for (int a=0; a < arrayMayo.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayMayo.get(a);
}
return precipitacionTotal/31;}

if (m.equalsIgnoreCase("Junio")){
for (int a=0; a < arrayJunio.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayJunio.get(a);
}
return precipitacionTotal/30;}

if (m.equalsIgnoreCase("Julio")){
for (int a=0; a < arrayJulio.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayJulio.get(a);
}
return precipitacionTotal/31;}

if (m.equalsIgnoreCase("Agosto")){
for (int a=0; a < arrayAgosto.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayAgosto.get(a);
}

if (m.equalsIgnoreCase("Septiembre")){
for (int a=0; a < arraySeptiembre.size(); a++){
precipitacionTotal = precipitacionTotal+ arraySeptiembre.get(a);
}
return precipitacionTotal/30;}

if (m.equalsIgnoreCase("Octubre")){
for (int a=0; a < arrayOctubre.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayOctubre.get(a);
}
return precipitacionTotal/31;}

if (m.equalsIgnoreCase("Noviembre")){
for (int a=0; a < arrayNoviembre.size(); a++){
precipitacionTotal = precipitacionTotal+ arrayNoviembre.get(a);
}
return precipitacionTotal/30;}

return precipitacionTotal/31;}

return precipitacionTotal/31;
}
}

Código:
public class Actividad {

public static void main(String[] args) {
Pluviometro p = new Pluviometro();
for (int a=1; a<= 31; a++){
p.setPrecipitacion(Meses.ENERO,Math.random());
System.out.println("Precipitacion dia "+a+" Enero:"+p.getPrecipitacion(Meses.ENERO));}
System.out.println("La PRECIPITACION MEDIA DEL MES DE ENERO ES: "+p.precipitacionMedia("eNero"));
System.out.println("");
for (int a=1; a<= 28; a++){
p.setPrecipitacion(Meses.FEBRERO,Math.random());
System.out.println("Precipitacion dia "+a+" Febrero:"+p.getPrecipitacion(Meses.FEBRERO));}
System.out.println("La PRECIPITACION MEDIA DEL MES DE FEBRERO ES: "+p.precipitacionMedia("febrero"));
System.out.println("");
}

}


« Última modificación: 20 Diciembre 2014, 22:06 pm por winnipu » En línea

NullP0inter

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: mejorar codigo
« Respuesta #1 en: 27 Diciembre 2014, 14:28 pm »

Podrías crear una clase emboltorio creo que se llama, para ir creando un objeto con sus datos y luego ir guardándolos en la lista e ir accediendo por el valor de la fecha para las comparaciones. Además puedes crear un array para las precipitaciones numerando el índice en orden.


Un saludo


« Última modificación: 27 Diciembre 2014, 14:31 pm por NullP0inter » En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: mejorar codigo
« Respuesta #2 en: 2 Enero 2015, 16:04 pm »

Gracias nullpointer, miro lo de la clase envoltorio. Lo del array me parece buena idea.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mejorar codigo java
Java
sapito169 5 7,293 Último mensaje 18 Diciembre 2008, 05:37 am
por sapito169
Mejorar este código
.NET (C#, VB.NET, ASP)
Meta 1 2,310 Último mensaje 12 Diciembre 2015, 21:56 pm
por kub0x
Mejorar el código de emails
PHP
Antoniio 0 2,082 Último mensaje 12 Octubre 2016, 01:16 am
por Antoniio
Mejorar la apariencia del código
Sugerencias y dudas sobre el Foro
Borito30 1 3,009 Último mensaje 20 Febrero 2017, 18:41 pm
por #!drvy
Dos dudas para mejorar el código
Programación C/C++
DamnSystem 3 3,182 Último mensaje 6 Noviembre 2017, 14:21 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines