Løsningsforslag - oppgaver i Avsnitt 1.4.5


Oppgave 1

  public static void main(String... args)
  {
    for (Studium s : Studium.values())
    {
      System.out.println(s.toString() + " (" + s.name() + ")");
    }
    /*
    Ingeniørfag - data (Data)
    Informasjonsteknologi (IT)
    Anvendt datateknologi (Anvendt)
    Enkeltemnestudent (Enkeltemne)    
    */
  }

Oppgave 3

package hjelpeklasser;
import java.util.*;

public enum Måned
{
  JAN (1, "januar"),
  FEB (2, "februar"),
  MAR (3, "mars"),
  APR (4, "april"),
  MAI (5, "mai"),
  JUN (6, "juni"),
  JUL (7, "juli"),
  AUG (8, "august"),
  SEP (9, "september"),
  OKT (10, "oktober"),
  NOV (11, "november"),
  DES (12, "desember");

  private final int mndnr;
  private final String fulltnavn;

  private Måned(int mndnr, String fulltnavn)
  {
    this.mndnr = mndnr;
    this.fulltnavn = fulltnavn;
  }

  public int mndnr() { return mndnr; }

  @Override public String toString() { return fulltnavn; }

  public static String toString(int mnd)
  {
    if (mnd < 1 || mnd > 12) throw
      new IllegalArgumentException("Ulovlig måndesnummer!");

    return values()[mnd - 1].toString();
  }

  public static Måned[] vår()
  {
    return Arrays.copyOfRange(values(),3,5);
  }

  public static Måned[] sommer()
  {
    return Arrays.copyOfRange(values(),5,8);
  }

  public static Måned[] høst()
  {
    return Arrays.copyOfRange(values(),8,10);
  }

  public static Måned[] vinter()
  {
    return new Måned[] { NOV, DES, JAN, FEB, MAR };
  }
}

Et program:

  public static void main(String... args)
  {
    for (Måned m : Måned.høst())
    {
      System.out.println(m.toString() + " (" + m.name() + ") " + m.mndnr());
    }

    // september (SEP) 9
    // oktober (OKT) 10
  }

Oppgave 4

public enum Studium
{
  Data ("Ingeniørfag - data"),
  IT ("Informasjonsteknologi"),
  Anvendt ("Anvendt datateknologi"),
  Elektro ("Ingeniørfag - elektronikk og informasjonsteknologi"),
  Enkeltemne ("Enkeltemnestudent");

  private final String fulltnavn;

  private Studium(String fulltnavn) { this.fulltnavn = fulltnavn; }

  @Override public String toString() { return fulltnavn; }
}

Oppgave 5

Hvis programmet under blir kjørt, vil ikke de to elektrostudentene komme rett sortert. Sjekk det. Se forøvrig Avsnitt 1.4.10.

  public static void main(String... args)
  {
    Student[] s = new Student[9];                             // en studenttabell

    s[0] = new Student("Kari","Svendsen",Studium.Data);      // Kari Svendsen
    s[1] = new Student("Boris","Zukanovic",Studium.IT);      // Boris Zukanovic
    s[2] = new Student("Ali","Kahn",Studium.Anvendt);        // Ali Kahn
    s[3] = new Student("Azra","Zukanovic",Studium.IT);       // Azra Zukanovic
    s[4] = new Student("Kari","Pettersen",Studium.Data);     // Kari Pettersen
    s[5] = new Student("Anders","Åsen",Studium.Elektro);     // Anders Åsen
    s[6] = new Student("Kari","Østsiden",Studium.Elektro);   // Kari Østsiden
    s[7] = new Student("Per","Jensen",Studium.Enkeltemne);   // Per Jensen
    s[8] = new Student("Kari","Lie",Studium.Enkeltemne);     // Kari Lie

    Tabell.innsettingssortering(s);                     // Programkode 1.4.2 e)
    for (Student t : s) System.out.println(t);
  }

Oppgave 7

public class Person implements Comparable<Object>
{
  private final String fornavn;         // personens fornavn
  private final String etternavn;       // personens etternavn

  public Person(String fornavn, String etternavn)    // konstruktør
  {
    this.fornavn = fornavn;
    this.etternavn = etternavn;
  }

  public final String fornavn() { return fornavn; }       // aksessor
  public final String etternavn() { return etternavn; }   // aksessor

  public int compareTo(Object o)    // pga. Comparable<Object>
  {
    Person p = (Person)o;
    int cmp = etternavn.compareTo(p.etternavn);     // etternavn
    if (cmp != 0) return cmp;           // er etternavnene ulike?

    return fornavn.compareTo(p.fornavn);   // sammenligner fornavn
  }

  public boolean equals(Object o)      // vår versjon av equals
  {
    if (o == this) return true;
    if (!(o instanceof Person)) return false;
    return compareTo((Person)o) == 0;
  }

  public int hashCode() { return (etternavn + fornavn).hashCode(); }

  public String toString() { return fornavn + " " + etternavn; }

} // class Person