Løsningsforslag - oppgaver i Avsnitt B.6


Oppgave 1

Dette skal stå foran for-løkken:

  Calendar c = Calendar.getInstance();  // inneværende år  
  c.set(Calendar.MONTH, 11);  // måneder går fra 0 - 11, dvs. desember = 11

Oppgave 2

  public static String julaften(int år)  // fire siffer for år
  {
    Calendar c = new GregorianCalendar(år,Calendar.DECEMBER, 24);
    return String.format("%tA", c);
  }

  public static void main(String[] args) throws IOException
  {
    System.out.println(julaften(2017));
    // Utskrift: søndag 
  }

Oppgave 3

  public static int ukedagJulaften(int ukedag) // søndag er 1, mandag 2, osv.
  {
    Calendar c = Calendar.getInstance();  // nå
    c.set(Calendar.MONTH, Calendar.DECEMBER);
    c.set(Calendar.DAY_OF_MONTH, 24);

    while (c.get(Calendar.DAY_OF_WEEK) != ukedag)
    {
      c.roll(Calendar.YEAR, true);
    }
    return c.get(Calendar.YEAR);
  }

  public static void main(String[] args) throws IOException
  {
    System.out.println(ukedagJulaften(Calendar.WEDNESDAY));
    // Utskrift: 2025
  }

Oppgave 4

  Calendar[] tidspunkt = new Calendar[6];
  tidspunkt[0] = new GregorianCalendar(2018, Calendar.DECEMBER, 24);
  tidspunkt[1] = new GregorianCalendar(2018, Calendar.MAY, 17);
  tidspunkt[2] = new GregorianCalendar(2017, Calendar.DECEMBER, 24);
  tidspunkt[3] = new GregorianCalendar(2017, Calendar.JUNE, 24);
  tidspunkt[4] = new GregorianCalendar(2018, Calendar.JANUARY, 1);
  tidspunkt[5] = new GregorianCalendar(2017, Calendar.DECEMBER, 31);

  Arrays.sort(tidspunkt);

  for (Calendar c : tidspunkt)
  {
    System.out.printf("%1$tA %1$te. %1$tB %1$tY%n", c);
  }
  /*
  lørdag 24. juni 2017
  søndag 24. desember 2017
  søndag 31. desember 2017
  mandag 1. januar 2018
  torsdag 17. mai 2018
  mandag 24. desember 2018    
  */