Probleme mit Sortieren und dem Zählen

Kid

Mitglied
Hey Leute, ich habe da nochmal eine kleine Frage.
Warum sortiert mit das Programm mir die Dozenten nicht richtig? Jedes Mal gibt mir das Programm folgendes aus:

Vorname: Mycroft , Nachname: Holmes , Geschlecht: m , Kostenstelle: 2
Vorname: Mycroft , Nachname: Holmes , Geschlecht: m , Kostenstelle: 2
Vorname: Mycroft , Nachname: Holmes , Geschlecht: m , Kostenstelle: 2

Und zweite Frage: Warum zählt mir die Methode zaehleWeiblich nicht die Anzahl der weiblichen Dozenten?
Jedes mal, kommt bei mir folgendes raus:

Es gibt insgesamt 0 weibliche Dozenten.

Kann mir das bitte jemand erklären.
 

Anhänge

nach welchen gesichtspunkt sortierst du deine dozenten

Keine Frauen:
keine in deinem DataSet ?
warscheinlich findet er kein "w" bei den frauen, wenn du den konstruktor aufrufst sag string3.toLowerCase(); dann hast du auf jeden fall den kleinbuchstaben
 
Die Methode listeSortieren sortiert einfach nicht. Der übergebene Parameter array wird in der Methode nirgends verändert - also auch nicht sortiert.
Am Ende der Methode versuchst du die Liste ausgegeben. Dabei verwendest du aber nicht die Schleifenvariable "x" als array-Index , sondern die Variable "i". Also gibst du den gleichen Satz immer wieder aus.

In der Methode zaehleWeiblich vergleichst du eine Person mit "w" - mit der Person und nicht mit dem Geschlecht der Person.
 
du braucht um auf das geschlecht zuzugreifen dozent.getGeschlecht(); welches dir das geschlecht wieder gibt
wenn du eine liste hast, musst du das sortieren nach einm bestimmten parameter glaub selber schreiben.
 
Ach irgendwie komme ich immer noch nicht weiter. In der Bedingung von if gibt mir eclips immer wieder ein Fehler an.

public int zaehleWeiblich(Person[] array){

int zaehler = 0;
for (int i = 0; i <= array.length -1; i++){
if (p.getGeschlecht().equals("w")){
zaehler++;
}
else
continue;
}
return zaehler;
}

Der Fehler lautet: Cannot invoke equals(String) on the primitive type char. Ich habe schon alles erdenklich ausprobiert und es immer noch nicht geschafft es zu beheben.
 
auch bei der Sortierung habe ich noch ein kleines Problem. Und zwar hat der Compiler anscheinend Probleme mit folgender Zeile: array = temp. Als Fehler gibt es mir "Type mismatch: cannot convert from int to Person", was ich zwar verstehen kann, aber nicht weiß, wie ich es beheben.


public void sortieren(Person[] array){

int laenge = array.length;
int i = 0;

while( i < laenge ){
int index = i;
int n = i + 1;
while( n < laenge ){
if( index > n){
index = n;
}
else{
continue;
}
n = n + 1;
}
int temp = index;
array[index] = array;
array = temp;
i = i + 1;
}

for (int x = 0; x <= laenge -1; x++){
System.out.println(array[x]);
}
}
 
Du sollst nicht den Index temporär speichern, sondern die Person an der Stelle des Index.
Java:
Person temp = array[index];
 
Habe ich schon mal probiert. Dann gibt es mir folgende Fehlermeldung aus: Incompatible operand types char and String
Hast du normale Anführungszeichen statt single quotes verwendet?
"w" = String
'w' = Char

Java:
if (p.getGeschlecht() == 'w') {
zaehler++;
}
 
Zuletzt bearbeitet:
Oh man, bin ich blöd, das war so simpel. Doch manchmal findet man den Wald vor lauter Bäumen nicht^^

Jetzt stellt sich mir aber die Frage, warum als Ergebnis 0 rauskommt. Eigentlich müsste ja 1 als Ergebnis vorliegen.
 
Java:
for (int i = 0; i <= array.length -1; i++){
if (p.getGeschlecht().equals("w")){
zaehler++;
}
...
du durchläufst das Array, prüfst aber nicht den Inhalt des Arrays, sondern immer und immer wieder nur die gleiche Variable p.
Scheinbar hast du eine Klassenvariable namens p angelegt (sehr schlechter Name). Außerdem ist fraglich ob du diese Klassenvariable überhaupt brauchst.

In dem Fall bietet sich auch foreach an:
Java:
for(Person p : array) {
  if(p.getGeschlecht()=='w') zähler++;
}
 

Zurück
Oben