Geburtstag aller Angestellten am bestimmten Datum

Status
Nicht offen für weitere Antworten.

w0ddes

Bekanntes Mitglied
Achso, es geht nur noch um die Ausgabe..

Man könnte jedem Mitarbeiter noch eine boolean Variable namens "schonAngezigt" mitgeben. Dadurch kommt es aber zu weiterer verschachtelung und würde das Programm wohl etwas unübersichtlich machen.

Pseudocode:
Java:
for (int i=0; i<mitarbeiter1.size(); i++) 
        {
            for (int k=i+1; k<mitarbeiter1.size(); k++)
            {
                if (mitarbeiter1.get(i).hasSameName(mitarbeiter1.get(k))) 
                {
                   if(mitarbeiter.get(i).getSchonAngezeigt != TRUE){
                      System.out.println(mitarbeiter1.get(i).getName()+" "+sdf.format(mitarbeiter1.get(i).getGeburtstag()));
                      mitarbeiterl.get(i).setSchonAngezeigt(TRUE);   
                   }
                   if(mitarbeiter.get(i).getSchonAngezeigt != TRUE){
                       System.out.println(mitarbeiter1.get(k).getName()+" "+sdf.format(mitarbeiter1.get(k).getGeburtstag()));
                       mitarbeiterl.get(k).setSchonAngezeigt = TRUE;
                   }
                }
            }
        }

so irgendwie könnte es funktionieren. Dazu müsste aber der Klasse Mitarbeiter eine neue Variable sowie getter und setter zugewiesen werden
 

zarr

Mitglied
kurze frage noch wie kann ich die ausgabe sortieren?
also das zum beispiel die namen die gleich sind untereinander stehen
z.b. test 01.01.0001
test 02.02.0002
test 03.03.0003
Hans 04.04.0004
Hans 05.05.0005

und nicht kreuz und quer?
 

w0ddes

Bekanntes Mitglied
Du bringst meinen Kopf ganz schön zum glühen :D
(Find ich aber gut, da ich hier auf der Arbeit recht wenig zu tun hab') ;)

Man könnte die Namen anstatt sie direkt auszugeben in eine Collection speichern und diese dann sortieren:

Hab dafür n Beispiel im "Handbuch der Javaprogrammierung" gefunden

Java:
001 /* Listing1505.java */
002 
003 import java.util.*;
004 
005 public class Listing1505
006 {
007   public static void main(String[] args)
008   {
009     //Konstruieren des Sets
010     TreeSet s = new TreeSet();
011     s.add("Kiwi");
012     s.add("Kirsche");
013     s.add("Ananas");
014     s.add("Zitrone");
015     s.add("Grapefruit");
016     s.add("Banane");
017     //Sortierte Ausgabe
018     Iterator it = s.iterator();
019     while (it.hasNext()) {
020       System.out.println((String)it.next());
021     }
022   }
023 }

Bin auch selbst für andere Vorschläge oder Verbesserungen offen, da ich selbst "nur" Anfänger bin.
 

zarr

Mitglied
Du bringst meinen Kopf ganz schön zum glühen :D
(Find ich aber gut, da ich hier auf der Arbeit recht wenig zu tun hab') ;)

Man könnte die Namen anstatt sie direkt auszugeben in eine Collection speichern und diese dann sortieren:

Hab dafür n Beispiel im "Handbuch der Javaprogrammierung" gefunden

Java:
001 /* Listing1505.java */
002 
003 import java.util.*;
004 
005 public class Listing1505
006 {
007   public static void main(String[] args)
008   {
009     //Konstruieren des Sets
010     TreeSet s = new TreeSet();
011     s.add("Kiwi");
012     s.add("Kirsche");
013     s.add("Ananas");
014     s.add("Zitrone");
015     s.add("Grapefruit");
016     s.add("Banane");
017     //Sortierte Ausgabe
018     Iterator it = s.iterator();
019     while (it.hasNext()) {
020       System.out.println((String)it.next());
021     }
022   }
023 }

Bin auch selbst für andere Vorschläge oder Verbesserungen offen, da ich selbst "nur" Anfänger bin.

hmmm ja ich grübel auch die ganze zeit aber ist richtig geiles gefühl wenn man des dann endlich mal hat und übrigens danke für so schnelle antworten;-)
hmm ja Collection hab ich auch schon grad geschaut^^ aber bei der aufgabe ist es nicht so einfach^^ und mit Collections hab ich nicht so wirklich die erfahrung aber des schaff ma schon ^^
PS: pass auf die aufgabe geht dann noch weiter ;-) ich lass mir noch was überlegen hehe
 

w0ddes

Bekanntes Mitglied
Der vorteil von diesem Treeset ist halt, dass der Iterator das schon alphabetisch sortiert ausgibt. Du hast also eigentlich keine Arbeit mehr.
 

zarr

Mitglied
ich hab ne andere lösung ;-)

Klasse Mitarbeiter
Java:
public class Mitarbeiter implements Comparable<Mitarbeiter>
...

public int compareTo(Mitarbeiter o) 
{
    return ((String)name).compareTo((String)o.name);
}

Klasse MitarbeiterGeb
Java:
int anz2 = mitarbeiter1.size();
	 	for (int i=0; i<anz2; i++) 
	 		{	
	 		 Collections.sort(mitarbeiter1);
	 	    
	 	    	  {
	 	    		  System.out.println(mitarbeiter1.get(i).getName()+" "+sdf.format(mitarbeiter1.get(i).getGeburtstag())+" Position: "+i);
	 	    	  }
	 		
	 		}

PS: mist jetzt merks ichs doch das es ja falsch is das er mir ja alle eingaben zurück gibt und nicht alle die namen gleich sind mit der zeile

Java:
System.out.println(mitarbeiter1.get(i).getName()+" "+sdf.format(mitarbeiter1.get(i).getGeburtstag())+" Position: "+i);
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Hier mal ein Bsp. wie man mit Hilfe einer sortierten Liste Mitarbeiter gleichen Namens ausgeben könnte:
Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MitarbeiterDemo {
	private List<Mitarbeiter> maList;
	
	public static void main(String[] args) {
		new MitarbeiterDemo().showSameNamedEmloyees();
	}

	public void initialiseDummyValues() {
		maList = new ArrayList<Mitarbeiter>();
		maList.add(new Mitarbeiter("Heinz", "19770228"));
		maList.add(new Mitarbeiter("Otto", "19951005"));
		maList.add(new Mitarbeiter("Günther", "19830630"));
		maList.add(new Mitarbeiter("Heinz", "19810113"));
		maList.add(new Mitarbeiter("Karl", "19751113"));
		maList.add(new Mitarbeiter("Heinz", "20000120"));
		maList.add(new Mitarbeiter("Günther", "19650802"));
		maList.add(new Mitarbeiter("Egon", "19811205"));
		maList.add(new Mitarbeiter("Otto", "19910705"));

	}

	public void showSameNamedEmloyees() {
		if (maList == null)
			this.initialiseDummyValues();
		Collections.sort(maList);
		String name = "";
		int index = 0;
		int m;
		for (m = 0; m < maList.size(); m++) {
			if (!name.equals(maList.get(m).getName())) {
				if (m - index > 1) {
					System.out.println("Mitarbeiter mit Namen: " + name);
					printEmployee(index, m);
				}
				name = maList.get(m).getName();
				index = m;
			}
		}
		if (m - index > 1) {
			System.out.println("Mitarbeiter mit Namen: " + name);
			printEmployee(index, m);
		}
	}

	private void printEmployee(int i, int end) {
		for (; i < end; i++) {
			System.out.println(maList.get(i).getName() + " : "
					+ maList.get(i).getBirthDay());
		}
	}

	class Mitarbeiter implements Comparable<Mitarbeiter> {
		private String name;
		private String birthDay;

		public Mitarbeiter(String name, String birthDay) {
			this.name = name;
			this.birthDay = birthDay;
		}

		public boolean hasSameName(Mitarbeiter mitarbeiter) {
			return name.equals(mitarbeiter.getName());
		}

		public String getName() {
			return name;
		}

		public String getBirthDay() {
			return birthDay;
		}

		public int compareTo(Mitarbeiter mitarbeiter) {
			if (!hasSameName(mitarbeiter))
				return name.compareTo(mitarbeiter.getName());
			return birthDay.compareTo(mitarbeiter.getBirthDay());
		}
	}
}
 

zarr

Mitglied
hmmm ok aber ich komm nicht klar mit dem code da muss ich ja mein ganzen code um bastln es gibt bestimmt nur eine kleinigkeit;-) ^^

Java:
for (int i=0; i<mitarbeiter1.size(); i++) 
        {
            for (int k=i+1; k<mitarbeiter1.size(); k++)
            {
                if (mitarbeiter1.get(i).hasSameName(mitarbeiter1.get(k))) 
                {
                    System.out.println("Die Mitarbeiter auf Position " + i + " und " + k 
                        + " haben den selben Namen: " + mitarbeiter1.get(i).getName());
                    System.out.println(mitarbeiter1.get(i).getName()+" "+sdf.format(mitarbeiter1.get(i).getGeburtstag()));
                    System.out.println(mitarbeiter1.get(k).getName()+" "+sdf.format(mitarbeiter1.get(k).getGeburtstag()));
                }
            }
        }

dies funktioniert eig doch es gibt immer doppelt aus das heißt position 0 und 1 sind gleich und auch 1 und 0 also gibts dies 4 mal aus
 
Zuletzt bearbeitet:

zarr

Mitglied
hat sich erledigt ^^

Java:
Collections.sort(mitarbeiter1);
                        Mitarbeiter vorgaenger = null;
                        int namensgleicheVorganger = 0;
                        for (Mitarbeiter m : mitarbeiter1) {
                            if (vorgaenger != null) {
                              if (m.hasSameName(vorgaenger)) {
                                if (++namensgleicheVorganger == 1) {
                                  System.out.println(vorgaenger.getName()+" "+sdf.format(vorgaenger.getGeburtstag()));
                                }
                                System.out.println(m.getName()+" "+sdf.format(m.getGeburtstag()));
                              } else {
                                namensgleicheVorganger = 0;
                              }
                            }
                            vorgaenger = m;
                          }
                        }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
F Summieren aller Geschenke vom Typ Geschenk? Java Basics - Anfänger-Themen 12
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
J ArrayList: summe aller Spielkarten Java Basics - Anfänger-Themen 15
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
S Collections Ausgabe aller Tastencodes Java Basics - Anfänger-Themen 9
F Nach Beendigung aller Schleifen von vorn anfangen, Java Basics - Anfänger-Themen 5
R string aller args[] ? Java Basics - Anfänger-Themen 8
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
M Aller anfang ist schwer :D Hilfe! Java Basics - Anfänger-Themen 18
L Liste aller Klassen die in einem Paket sind Java Basics - Anfänger-Themen 7
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
A Summe aller Natürlichen Zahlen - Methode Prüfen Java Basics - Anfänger-Themen 10
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
S Liste aller Partitionen (auch "unmounted") Java Basics - Anfänger-Themen 2
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
A OOP Ausgabe aller erstellten Objekte Java Basics - Anfänger-Themen 3
M Eclipse: Durchsuchen aller Dateien? Java Basics - Anfänger-Themen 1
B Liste aller Klassen die ein Interface implementieren. Java Basics - Anfänger-Themen 7
K Anzahl aller Datensätze anzeigen ? Java Basics - Anfänger-Themen 5
L Auflistung aller Fonts Java Basics - Anfänger-Themen 2
G Liste aller WindowListener Java Basics - Anfänger-Themen 3
D Die Frage aller Fragen Java Basics - Anfänger-Themen 22
J Auslesen aller Attribute mit JDOM Java Basics - Anfänger-Themen 15
G Aller anfang is schwer. Java Basics - Anfänger-Themen 4
A ausgabe aller 10-bitzahlen Java Basics - Anfänger-Themen 6
A Liste aller Items einlesen Java Basics - Anfänger-Themen 8
B Wo finde ich eine Übersicht aller Methoden? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben