Løsningsforslag - oppgaver i Avsnitt 1.9.3


Oppgave 1

  Character[] c = new Character[10];
  Arrays.fill(c, 'A');
  System.out.println(Arrays.toString(c));
  // Utskrift: [A, A, A, A, A, A, A, A, A, A]

Oppgave 2

  public static char tilfeldigBokstav()
  {
    Random r = new Random();
    int k = r.nextInt(29);
    if (k < 26) return (char) (k + 65);
    else if (k == 26) return 'Æ';
    else if (k == 27) return 'Ø';
    else return 'Å';
  }

Oppgave 3

Her kan en enten lage et eksplisitt lambda-uttrykk og så bruke det i et kall på metoden setInn(), eller en kan lage lambda-uttrykket som parameter. Den første måten er kanskje mest lesbar. Her lages begge måtene:

Med et eksplisitt lambda-uttrykk:

  final Random r = new Random();
  Character[] c = new Character[10];

  Supplier<Character> kilde = () ->
  {
      int k = r.nextInt(29);
      if (k < 26) return (char) (k + 65);
      else if (k == 26) return 'Æ';
      else if (k == 27) return 'Ø';
      else return 'Å';
  };

  settInn(c, kilde);

Med lambda-uttrykket direkte som parameter:

  final Random r = new Random();
  Character[] c = new Character[10];

  settInn(c, () ->
    {
      int k = r.nextInt(29);
      if (k < 26) return (char) (k + 65);
      else if (k == 26) return 'Æ';
      else if (k == 27) return 'Ø';
      else return 'Å';
    }
  );

Oppgave 4

  public static String tilfeldigDag()
  {
    Random r = new Random();
    switch (r.nextInt(7) + 1)
    {
      case 1:  return "man";
      case 2:  return "tirs";
      case 3:  return "ons";
      case 4:  return "tors";
      case 5:  return "fre";
      case 6:  return "lør";
      case 7:  return "søn";
      default: return "ukjent";
    }
  }

Eksempel på bruk av tilfeldigDag():

  String[] a = new String[10];
  settInn(a, () -> tilfeldigDag());
  System.out.println(Arrays.toString(a));