All pastes #771457 Raw Edit

oink

public java v1 · immutable
·published 2007-11-12 23:58 UTC
rendered paste body
package info3;/** *  * Info 3 Blatt 4, Aufgabe 1 *  * @author fieberfn, hatjeki * */import java.io.*;public class Politicians {		// Wurzel unserer Liste mit Politikern.	private TrunkList anchor = null;		//	 * Fügt einen Politiker politician mit dem Amt trunk das dieser im Jahr//	 * year ausgeübt hat bzw ausübt in unsere verkettete Liste ein. Wir nehmen//	 * an dass sich die Zeiträume der Amtsinhabung nicht überschneiden. */		public void add (String politician, String trunk, 							  int beginYear, int endYear) {		// Wenn die Liste noch leer ist, ersten Eintrag machen.		if (anchor == null) {			anchor = new TrunkList(trunk, new PoliticianList(politician, beginYear, endYear));		// Liste ist nicht leer, wenn es das Amt trunk schon gibt in die Teilliste einfügen.		} else {			assert(anchor != null) : "anchor == null, nicht erwartet!";			// Temporäre Referenz mit der durch die Liste der Ämter gegangen wird.			TrunkList trunkTmp = anchor;			// Schauen ob es das Amt schon gibt. Wenn ja, da einfügen, ansonsten neu kreieren.			while (trunkTmp.next != null && !trunkTmp.trunk.equalsIgnoreCase(trunk)) {				trunkTmp = trunkTmp.next;				//System.out.println("Amt "+trunk+" noch nicht gefunden");			}			// Ist das Amt zufällig das erste in unserer Liste von Ämtern?			if (trunkTmp.trunk.equalsIgnoreCase(trunk)) {				PoliticianList polTmp = trunkTmp.politicians;				while (polTmp.next != null && beginYear > polTmp.beginYear) {					polTmp = polTmp.next;				} // Der Politiker hat sein Amt am spätesten von bisher allen aufgenommen				System.out.println("beginYear: "+beginYear+", in Liste: "+polTmp.beginYear);								if (polTmp == trunkTmp.politicians) {					//				 Referenz auf nächstes Element zwischenspeichern, neues machen, Referenzen richtig hängen.					PoliticianList successor = trunkTmp.politicians;					trunkTmp.politicians = new PoliticianList(politician, beginYear, endYear, successor);				} else if (polTmp.next == null) {					polTmp.next = new PoliticianList (politician, beginYear, endYear);				// Der Politiker war/ist früher oder im gleichen Jahr im Amt wie ein anderer.				} else {					// Referenz auf nächstes Element zwischenspeichern, neues machen, Referenzen richtig hängen.					PoliticianList successor = polTmp.next;					polTmp.next = new PoliticianList(politician, beginYear, endYear, successor);				}			} else if (trunkTmp.next == null) {				trunkTmp.next = new TrunkList(trunk, new PoliticianList(politician, beginYear, endYear));			// Das gesuchte Amt scheint es schon zu geben, also politician in die Liste einfügen.			} else {				assert(trunkTmp != null) : "trunkTemp = null, obwohl es das hier nicht sein sollte";				assert(trunkTmp.trunk.equalsIgnoreCase(trunk)) : "Amt in Knoten != Amt gesucht";				// Temporäre Referenz mit der durch die Liste der Politiker gegangen wird.				PoliticianList polTmp = trunkTmp.politicians;				while (polTmp.next != null && beginYear > polTmp.beginYear) {					polTmp = polTmp.next;				} // Der Politiker hat sein Amt am spätesten von bisher allen aufgenommen				System.out.println("polTemp: "+polTmp+", trTmp.pol.ne: "+ trunkTmp.politicians.next);				/*if (polTmp == trunkTmp.politicians) {					System.out.println("foobar");					//				 Referenz auf nächstes Element zwischenspeichern, neues machen, Referenzen richtig hängen.					PoliticianList successor = trunkTmp.politicians;					trunkTmp.politicians = new PoliticianList(politician, beginYear, endYear, successor);									} else*/ if (polTmp.next == null) {					polTmp.next = new PoliticianList (politician, beginYear, endYear);				// Der Politiker war/ist früher oder im gleichen Jahr im Amt wie ein anderer.				} else {					// Referenz auf nächstes Element zwischenspeichern, neues machen, Referenzen richtig hängen.					PoliticianList successor = polTmp.next;					polTmp.next = new PoliticianList(politician, beginYear, endYear, successor);				}			}		}	}// end public procedure add ((String politician, String trunk, 	 // 								    int beginYear, int endYear)		public void addFile (String filename) throws FileNotFoundException {	   File datei = new File(filename);	   //FileReader leser = new FileReader(datei);		BufferedReader b = new BufferedReader(new FileReader(datei));		String politician = " ", trunk;		int beginYear, endYear;				try {			while (politician!= null && !politician.equals(" ")) {				politician = b.readLine();				trunk = b.readLine();				beginYear = Integer.parseInt(b.readLine());				endYear = Integer.parseInt(b.readLine());				add(politician, trunk, beginYear, endYear);			}		} catch (FileNotFoundException e) {			System.out.println("Fehler beim Einlesen des Strings. Eingabe bitte wiederholen");		}	}		public void print() {		// Temporäre Variablen zum durchwandern der Listenliste.		TrunkList trunkTmp = anchor;		PoliticianList polTmp = null;		// wenn trunkTmp != null ist sollten wir mindenstens einen Politiker haben.		while (trunkTmp != null) {			polTmp = trunkTmp.politicians;			while (polTmp != null) {				//System.out.print(polTmp.politicianName+", "+trunkTmp.trunk+", ");				//System.out.println(polTmp.beginYear+"-"+polTmp.endYear);				System.out.println(polTmp.politicianName + ": "+polTmp.beginYear);				polTmp = polTmp.next;			}			trunkTmp = trunkTmp.next;		}	}		// debug and Testfunktion	public int printNumberOfTrunks () {		TrunkList iterator = anchor;		int counter = 0;		while (iterator != null) {			counter++;			iterator = iterator.next;		}		//System.out.println("Counter war "+counter);		return counter;	}		/**	 * @param args	 */	public static void main(String[] args) {		Politicians oink = new Politicians();//		oink.add("Willy Brandt", "Bundeskanzler", 1969, 1974);//		oink.add("Johannes Rau", "Bundespräsident", 1999, 2004);//		oink.add("Konrad Adenauer", "Bundeskanzler", 1949, 1963);//		oink.add("Willy Brandt", "Bundeskanzler", 1969, 1974);//		oink.add("Konrad Adenauer", "Bundeskanzler", 1949, 1963);//		oink.add("Johannes Rau", "Bundespräsident", 1999, 2004);		oink.addFile("politiker.txt");		oink.print();		System.out.println("Es gibt "+oink.printNumberOfTrunks()+" Ämter");	}}