Programa contar días JAVA

Comentario y presentación:

Este programa que he diseñado cómo práctica para aplicar los conocimientos básicos de java que he adquirido este primer semestre se compone de varios elementos: Entrada de datos por teclado y salida por pantalla. Bucle for para ir pasando por los diversos meses y años de distancia, además de incluir el condicional if, además de usar el switch case para definir que días se han de añadir o contar por cada mes. Es decir muchos elementos de base de programación están ahí. Faltarían cosas que he visto de forma autodidacta cómo funciones y otras cosas.

Este programa lo que hace es primero pedir una fecha y luego otra por día, mes y año. Y va analizando primero si es mismo año o no y la distancia entre dichos elementos. Además de analizar si el año es bisiesto o no cuando ha de calcular año tras año e ir sumando días de la totalidad de un año. Para este calculo se usa el modulo 4, año % 4, para así obtener el resultado de sí es o no. Si es multiple de 4 el programa determinará que es bisiesto y sumará 366 días en el contador, si no lo es, calculará 365 y los sumará.

Cosas a mejorar y aplicables en este caso:

Cuando aprenda y domine el tema de las funciones, simplificar el código mediante la función de los meses y días. El nombre de la función sería tipo diasmes o similar. Por otra parte sería oportuno pedir la fecha inicial y final en solamente 2 conceptos en lugar de ahora en 6.
Día 1
Mes 1
Año 1
Día 2
Mes 2
Año 2

Lo ideal sería simplificarlo en fecha inicial y fecha final. A partir de ello extraer la información del día, mes y año, pero simplificar la entrada para el usuario y hacerlo más accesible.

Código:
Contardias.java

 

package contardias;
import java.util.Scanner;
public class Contardias {
    
    public static void main(String[] args) {
    Scanner lector = new Scanner(System.in);
    int count=0, dmax1=0; 
    int anys=0;
    System.out.println("Si ha introduit dades incorrectes es posarà un valor correcte per defecte");
    System.out.println("Dies per defecte serà 15, mes serà 6(juny) i el primer any serà 5 anys inferior al indicat");
    System.out.println("Indiqui el día del any inicial a comptar \n");
    int dia1 = lector.nextInt();
    if((dia1>31)||(dia1<1)){
        dia1=15;
    }
    System.out.println("Indiqui el mes del any inicial a comptar \n");
    int mes1 = lector.nextInt();
    if((mes1<1)||(mes1>12)){
        mes1=1;        
    }
    System.out.println("Indiqui el any inicial a comptar \n");
    int any1 = lector.nextInt();
    System.out.println("Indiqui el día del any final a comptar \n");
    int dia2 = lector.nextInt();
    if((dia2>31)||(dia2<1)){
        dia2=15;
    }
    System.out.println("Indiqui el mes del any final a comptar \n");
    int mes2 = lector.nextInt();
    if((mes2<1)||(mes2>12)){
        mes2=1;        
    }
    System.out.println("Indiqui el any final a comptar \n");
    int any2 = lector.nextInt();
       if(any2<any1){
           any1=any2-5;
       }
    // dïas transcurridos
    switch(mes1){
        case 1:
        case 3: 
        case 5:
        case 7:
        case 8:
        case 10:            
        case 12:    
            dmax1=31;
        break;
        case 4:
        case 6:
        case 9:
        case 11:
           dmax1=30;
           break;
        case 2:
            if(any1%4==0){
                dmax1=29;
            }else{
                dmax1=28;
            }
    }
    if (any1==any2){
        if(mes1==mes2){
            count=dia2-dia1;
            //System.out.println("días transcurridos: "+count);
        }else{      
            count=count+dmax1-dia1;
            //System.out.println("días transcurridos del mes inicial "+count);
            for (int i=mes1+1;i<mes2;i++){
              switch(i){
            case 1:
            case 3: 
            case 5:
            case 7:
            case 8:
            case 10:            
            case 12:    
                count=count+31;
            break;
            case 4:
            case 6:
            case 9:
            case 11:
                count=count+30;
                break;
            case 2:
                if(any1%4==0){
                    count=count+29;
                }else{
                    count=count+28;
                }
        }          
            }
        if(mes2==mes1+1){
            count=count+dia2;
        }
        //System.out.println("Días transcurricdos entre los meses: "+count);
        }
            }else{
                count=count+dmax1-dia1;
                for (int j=mes1+1;j<13;j++){
                    switch(j){
                        case 1:
                        case 3: 
                        case 5:
                        case 7:
                        case 8:
                        case 10:            
                        case 12:    
                            count=count+31;
                            break;
                        case 4:
                        case 6:
                        case 9:
                        case 11:
                            count=count+30;
                            break;
                        case 2:
                             if(any1%4==0){
                                count=count+29;
                            }else{
                                count=count+28;
                            }
                    }          
                }
                //System.out.println("Días transcurridos en el año 1: "+count);
                if(any2-any1>1){
                    for(int k=any1+1; k<any2;k++){
                        if(k%4==0){
                            count=count+366;
                        }else{
                            count=count+365;
                        }
                    }
                }
            //System.out.println("Días transcurridos entre el año 1 y año2 "+count);
            for(int l=1;l<mes2;l++){
                switch(l){
                        case 1:
                        case 3: 
                        case 5:
                        case 7:
                        case 8:
                        case 10:            
                        case 12:    
                            count=count+31;
                            break;
                        case 4:
                        case 6:
                        case 9:
                        case 11:
                            count=count+30;
                            break;
                        case 2:
                             if(any2%4==0){
                                count=count+29;
                            }else{
                                count=count+28;
                            }
                    } 
            }    
            count=count+dia2;
            //System.out.println("Días transcurridos totales: "+count);            
        }
        System.out.println("Días transcurridos totales entre la fecha inciial y la fecha final: "+count);
    }
}