public class JourDApresEnConsole {

/////////////////////////////////////////////

/* Type agrege de stockage d'une date      */
/* formee d'un numero de jour, d'un numero */
/* de mois et d'un numero d'annee          */

  static class Date {
    int jour = 1;
    int mois = 1;
    int annee = 1901; };

/* Calcul du jour suivant un jour code     */
/* sous la forme jour mois annee en entier */

  static void jourSuivant(Date d,Date res) {
    res.jour = d.jour+1;
    res.mois = d.mois;
    res.annee = d.annee;
    if ( res.jour > nombreJoursMois(d.mois,d.annee) ) {
      res.jour = 1;
      res.mois = res.mois+1;
      if ( res.mois > 12 ) {
        res.mois = 1;
        res.annee = res.annee+1; } }
  }

/* Modification d'un jour code sous forme  */
/* jour mois annee en entier               */
/* pour l'incrementer d'un jour            */

  static void jourDApres(Date d) {
    d.jour = d.jour+1;
    if ( d.jour > nombreJoursMois(d.mois,d.annee) ) {
      d.jour = 1;
      d.mois = d.mois+1;
      if ( d.mois > 12 ) {
        d.mois = 1;
        d.annee = d.annee+1; } }
  }

/* Modification d'un jour code sous forme  */
/* jour mois annee en entier               */
/* pour l'incrementer d'un jour            */

  static void jourDApres2(Date d) {
    jourSuivant(d,d);
  }

/////////////////////////////////////////////

/* Test si une annee est bissextile        */

  static boolean testBissextile(int annee) {
    boolean res;
    if ( annee%400 == 0 ) {
      res = true; }
      else {
      if ( annee%100 == 0 ) {
        res = false; }
        else {
        if ( annee%4 == 0 ) {
          res = true; }
          else {
          res = false; } } }
    return res;
  }

/* Calcul du nombre de jours d'un mois     */

  static int nombreJoursMois(int mois,int annee) {
    int res;
    switch (mois) {
      case 1 :
      case 3 :
      case 5 :
      case 7 :
      case 8 :
      case 10 :
      case 12 : {
        res = 31; }
        break;
      case 4 :
      case 6 :
      case 9 :
      case 11 : {
        res = 30; }
        break;
      case 2 : {
        if ( testBissextile(annee) == true ) {
          res = 29; }
          else {
          res = 28; } }
        break;
      default : {
        res = -1; }
        break; }
    return res;
  }

/* Lecture au clavier et retour d'une date */

  static Date LectureDate() {
    Date d = new Date();
    Console.afficher("SVP, l'annee : ");
    d.annee = Console.saisirInt();
    Console.afficher("SVP, le mois : ");
    d.mois = Console.saisirInt();
    Console.afficher("SVP, le jour : ");
    d.jour = Console.saisirInt();
    return(d);
  }

/* Formatage et retour d'une date          */
/* en une chaine de caracteres             */

  static String format(Date d) {
    String s = "";
    s = d.jour+"/"+d.mois+"/"+d.annee;
    return(s);
  }

/* Programme principal                     */

  public static void main(String [] args) {
    Console.setTitle("JourDApres");
    Date dt;
    Date resultat;
    dt = LectureDate();
    jourDApres(dt);
    Console.afficherln(format(dt));
    jourDApres2(dt);
    Console.afficherln(format(dt));
  }
}