All pastes #350655 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-02-11 16:43 UTC
rendered paste body
/*
 * Klassen Plassering er gitt i oppgaveteksten, med unntak av metoden equals()
 */
 import java.util.ArrayList;

class Plassering {
  private int romnr;
  private int rekkenr;
  private int plassnr; // i rekken
  public Plassering(int startRomnr, int startRekkenr, int startPlassnr) {
    romnr = startRomnr;
    rekkenr = startRekkenr;
    plassnr = startPlassnr;
  }

  public int finnRomnr() {
    return romnr;
  }

  public int finnRekkenr() {
    return rekkenr;
  }

  public int finnPlassnr() {
    return plassnr;
  }

  public String toString() {
    return "Romnr " + romnr + ", rekke " + rekkenr + ", plass " + plassnr + ". ";
  }

  /*
   * Vi trenger å sammenlikne plasseringsobjekter. Det mest naturlige er da
   * å utvide klassen med equals()- eller compareTo()-metode. I denne oppgaven
   * er det nok med equals().
   */

  public boolean equals(Object obj) {
    if (!(obj instanceof Plassering)) return false;
    if (this == obj) return true;
    Plassering p = (Plassering) obj;
    return (romnr == p.romnr && rekkenr == p.rekkenr && plassnr == p.plassnr);
  }
}

class Køplass {
	private String fag;
	private Plassering plass;

	//Konstruktør
	public Køplass(String fag, Plassering plass){
		this.fag = fag;
		this.plass = plass;
	}

	//Metoder
	public String finnFag(){
		return fag;
	}

	public Plassering finnPlass(){
		return plass;
	}
}

class Kø {
	private ArrayList<Køplass> køen = new ArrayList<Køplass>();

	//Konstruktør

	//Metoder
	//Privat hjelpemetode for å finne om studenten allerede står i køen
	private boolean finnIKø(Plassering plass, String fag){
		for(Køplass k : køen){
			if(k.finnFag().equals(fag) && k.finnPlass().equals(plass) ){
				return true;
			}
		}
		return false;
	}

	public int registrerNyStudentIKøen(String fag, Plassering plass){
		if(finnIKø(plass,fag) == false){
			køen.add(new Køplass(fag,plass) );
			return køen.size();
		}
		return -1; //Om studenten finnes fra før
	}

	public Plassering finnNeste(String fag){
		for(Køplass k : køen){
			if(k.finnFag().equals(fag)){
				return k.finnPlass();
			}
		}
		return null;
	}

	public int taUtAvKøen(Plassering plass, String fag){
		for (Køplass k : køen) {
			if(finnIKø(plass,fag) == false){ //Altså han finnes ikke i køa
				return -1;
			}else{
				køen.remove(k);
			}
		}
		return køen.size();
	}
}

class OppgaveA {
  public static void main(String[] args) {
    Kø køen = new Kø();

    /* Registrerer to studenter i kø, og prøver også å registrere den siste en gang til (ikke del av oppgaven) */
    Plassering plassA = new Plassering(10, 1, 3);
    Plassering plassB = new Plassering(10, 1, 2);
    Plassering plassC = new Plassering(10, 1, 2);
    int pos1 = køen.registrerNyStudentIKøen("Java", plassA);
    int pos2 = køen.registrerNyStudentIKøen("Java", plassB);
    int pos3 = køen.registrerNyStudentIKøen("Java", plassC);
    if (pos1 >= 0) System.out.println(plassA + " er registrert på pos " + pos1);
    else System.out.println(plassA + " allerede registrert.");
    if (pos2 >= 0) System.out.println(plassB + " er registrert på pos " + pos2);
    else System.out.println(plassB + " allerede registrert.");
    if (pos3 >= 0) System.out.println(plassC + " er registrert på pos " + pos3);
    else System.out.println(plassC + " allerede registrert.");

    /* Finner plasseringen til neste student som trenger hjelp */
    Plassering neste = køen.finnNeste("Java");
    System.out.println(neste);

    /* Tar ut denne studenten av køen */
    if (køen.taUtAvKøen(neste, "Java") != -1) System.out.println("Ut av køen - ok");
    else System.out.println("Ut av køen - ikke ok");

    /* Prøver en gang til, det skal ikke gå bra */
    if (køen.taUtAvKøen(neste, "Java") != -1) System.out.println("Ut av køen - ok");
    else System.out.println("Ut av køen - ikke ok");
  }
}