Ayuda con un Calendario en Linea de Codigo – java

Pregunta:


Pues se supone que mi código debería imprimir en algunos meses 31 días según una de mis condiciones pero no lo hace de hecho imprime un día menos en todos los meses.

Si alguien puede ayudarme y chequear mi código seria de gran ayuda, se que hay cosas que podrían estar simplificadas pero solo estoy aprendiendo.

Gracias de ante mano

import java.util.Scanner;
public class CalFinal{ 
    public static void main (String[] args){
        Scanner sc = new Scanner(System.in);

        System.out.print("Insert Year:");
        int year =sc.nextInt();

        if (year <= 0){

            System.out.println( year + " Is an invalid Year");
        }



        for (int mo = 1 ; mo <= 12 ; mo++){
            int days = daysOfMonth(year, mo);
            int countDays = 0;
            if (mo == 1 ){
                System.out.println("       January");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }


                }

                System.out.println() ;

            }else if (mo == 2 ){
                System.out.println("       February");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }
                System.out.println() ;

            }else if (mo == 3 ){
                System.out.println("         March");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 4 ){
                System.out.println("         April");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 5 ){
                System.out.println("         May");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 6 ){
                System.out.println("          June");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 7 ){
                System.out.println("          July");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 8 ){
                System.out.println("         August");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 9 ){
                System.out.println("         September");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 10 ){
                System.out.println("          October");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else if (mo == 11){
                System.out.println("         November");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }else{
                System.out.println("          December");
                System.out.println("SutMotTutWetThtFrtSa");
                for (int dy = 1; dy < days; dy++){
                    System.out.print(""+dy +  "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }
                }

                System.out.println() ;

            }
        }
    }

    public static boolean isLeapYear(int year){

        if ((year % 4 == 0) && (year % 100 != 0 ) || (year % 400 == 0)){
            return true;

        }else{
            return false;
        }

    }

    public static int daysOfMonth (int year, int month){
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
            return 31;
        }else if(month  == 2){
            if(isLeapYear(year)){
                return 29;
            }else{
                return 28;
            }
        }else{
            return 30;
        }

    }

}

Preguntado por: Edgardo Quintero

Paul Vargas

Debido a la condición del ciclo for (dy < days), sólo imprimes 30 para los meses con 31 y 29 para los meses con 30, etc. Debería ser dy <= days.

Necesitas cambiar en cada uno de los ciclos for de:

for (int dy = 1; dy < days; dy++){

a:

for (int dy = 1; dy <= days; dy++){

Pues aqui esta el codigo con la formula de Zeller al final la cosa es q me esta poniendo la fecha en el dia correcto

import java.util.Scanner;
public class CalFinal{ 
    public static void main (String[] args){
        Scanner sc = new Scanner(System.in);

        System.out.print("Insert Year:");
        int year =sc.nextInt();

        if (year <= 0){

            System.out.println( year + " Is an invalid Year");
        }



        for (int mo = 1 ; mo <= 12 ; mo++){
            int days = daysOfMonth(year, mo);
            int rD = rightDay(year, mo);
            int countDays = 0;


            if (mo == 1 ){
                System.out.println("       January");
                System.out.println("SutMotTutWetThtFrtSa");

                for (int d = 0; d < rD ; d++){

                System.out.print("t");
                }   


                for (int dy = 1; dy <= days; dy++){
                    System.out.print(dy + "t") ;
                    countDays ++;
                    if (countDays == 7){
                        System.out.println() ;
                        countDays = 0;
                    }


                }

                //System.out.println() ;

        }


private static int rightDay(int year, int month){
        int a = (14 - month) / 12;
        int y = year - a ;
        int m = month + 12 * a - 2;
        int day = 1, d;

        d = (day + y + y / 4 - y/ 100 + y / 400 + (31 * m ) / 12) %7;

        return(d);


    }

Fuente

Related Posts:

Tomcat no encuentra los recursos – java angularjs http
Pregunta: Bueno tengo una aplicación con AngularJS que hace peticiones al API de gitHub como un ejemplo para aprender a usar AngularJS, pero el problema ...
Crear cuenta regresiva N segundos mientras se visualiza una Activity en Android – java android
Pregunta: Quiero implementar una cuenta regresiva de N segundos, que se inicie cuando la Activity se muestre, se pare el contador cuando el usuario decide ...
¿Es legal leer imágenes y descripciones de otro sitio web y ponerlas en mi app? – java woocommerce
Pregunta: ¿Es legal leer imágenes y descripciones de otro sitio web y ponerlas en mi programa? Supongamos que quiero hacer una aplicación como la de ebay, ...
Problema con consulta JPQL + JPA + JSF + EJB – java jsf jpa
Pregunta: @Override public Usuario iniciarSesion(Usuario us){ Usuario usuario = null; String consulta; try { ...
No encuentra el audio dentro de src – java
Pregunta: Tengo una carpeta "audios" dentro de "src", para cuando construya el proyecto pueda reproducir los audios. Intento abrir el audio pero me salta "java.lang.NullPointerException" ...
¿Como saber con Apache POI y java si una columna en excel esta oculta? – java apache-poi
Pregunta: Hola estoy importando archivos excel con extensión xls y xlsx pero mi duda es como poder detectar si la columna de una celda esta ...
Spinner y EditText – java android
Pregunta: Tengo este código para cargar un spinner con datos de una base de datos: private class Getfrutas extends AsyncTask<Void, Void, Void> { ...
¿Cómo enviar datos de una pagina JSP a un Servlet sin un form? – java jsp java-ee
Pregunta: Tengo un problema. No logro recibir un valor por GET en el Servlet, no se por qué. Aquí el código JSP: <html> ...
¿ Por qué se me detiene la aplicación al usar este pequeño código? – java android bottombar
Pregunta: Tengo un bottomBar donde tengo 5 opciones, la última es la del mapa de google API. Mi problema es que al hacer click en ...
Exception java.lang.NumberFormatException al intentar un “.size” dentro de una EL – java jsp jboss
Pregunta: Estoy teniendo una Exception en el siguiente código dentro de un jsp: <c:if test="${usuarios.size gt 10}"> usuarios es un ArrayList que objetos. usuarios no esta vacío ya ...
¿ Cómo implemento este código para android 6.0? – java android
Pregunta: Tengo en un Fragment implementado el Google API y FUNCIONA. Pero funciona en mis 3 móviles que son jellybean, kitkat y lollipop. El ...
Algoritmo de Bresenham, duda con la codificación de los 8 octantes – java matemáticas
Pregunta: En la imagen de arriba muestra todos los cuadrantes de la pantalla: Este algoritmo sirve para el movimiento natural de la pelota, usado en juegos ...
¿Cómo guardar un ImageView en Android? – java android
Pregunta: Mi aplicación está compuesta por un botón y un ImageView y cuando se aprieta el botón la ImageView recibe una imagen que tengo en ...
¿Existe alguna manera de implementar un listener para todos los clicks que se den en una sesión Java? – java
Pregunta: Como la pregunta lo dice, ¿se podrá crear un listener que detecte cada click que se dé en la sesión abierta de Java?. Mi ...
Convertir un bitmap a string – java android
Pregunta: ¿Hay alguna forma de convertir un bitmap a string sin convertirlo a base64?. Tengo una app que envía imágenes a una base de datos, pero ...
Tags:

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *