Java: Arrays auslesen, speichern und vergleichen?!
Hey E*pvpers.
Ich besuche seid Anfang dieses Schuljahres jetzt den InfoLk.
Wir programmieren und werden auch weiterhin vorerst, in Java programmieren und benutzen den Compiler BlueJ wobei das ja eher nebensächlich ist.
Nun zu meinem Problem.
Wir sind angefangen an einem Projekt "Schule" zu arbeiten.
Im Moment sind wir auf dem Stand, dass man eine Anzahl von Leheren und Schülern erzeugt, die man im Parameter festlegen kann.
Diese Lehrer und Schüler werden mit Daten aus der Klasse Personengenerator gefüllt und in Arrays gespeichert. Unter anderem auch mit einem Namen.
Die vielfalt dieser Namen ist nebenbei bemerkt nicht riesig deswegen hatten wir folgende Aufgabe.
Wir sollten überlegen wie es möglich ist eine Methode zu schreiben, die ausgibt wie viele Lehrer und Schüler den gleichen Namen haben.
Ich poste mal den relevanten Quellcode der vllt hilfreich ist um sich reinzuversetzen:
Soo: Da hätten wir einmal die Erzeugung der Lehrer etc und die Speicherung in den Arrays.
PHP Code:
public Schule(int anzahlSchueler, int anzahlLehrer, int anzahlHausmeister)
{
Personengenerator personGen = new Personengenerator();
lehrerArray = new Lehrer[anzahlLehrer];
schuelerArray = new Schueler[anzahlSchueler];
hausiArray = new Hausmeister[anzahlHausmeister];
private String[] fach = {"Deutsch", "Latein", "Englisch", "Informatik", "Spanisch", "Mathe", "Sport", "Biologie", "Physik",
"Philo", "Erdkunde"};
/**
* Constructor for objects of class Personengenerator
*/
/**
* Gibt einen m�nnlichen Vornamen zur�ckl
*/
public String gibMaennlichenVornamen(){
int anzahl = gibZufallsZahl(gibAnzahlVornamenM());
return vornamenM[anzahl];
}
/**
* gibt einen Nachnamen zur�ck
*/
public String gibNachnamen(){
int anzahl = gibZufallsZahl(gibAnzahlNachnamen());
return nachnamen[anzahl];
}
Habe jetzt leider das Problem, dass ich nicht weiß, wie man die Namen in den Arrays genau vergleichen kann bzw ausgeben kann wie viele Lehrer und Schüler jeweils den selben Namen haben.
Vllt weiß von euch da einer weiter bzw weiß wie sich das programmieren lässt.
nehmen, oder wie auch immer bei dir die methode bei der heißt um vom lehrer den namen zu bekommen, wie du es jetzt hast prüft er ob der string name gleich dem objekt lehrer ist, was natürlich nicht stimmt weils verschiedene objekte sind
Wenn die Variable in der Klasse public ist, ist es egal ob du es mit .vorname machst oder ob du dafür eine eigene Methode schreibst und dann .getVorname() nimmst. Idr macht man die Variablen aber Private und dann greift man mit setter / getter Methoden auf diese zu.
Mach es einfach so wie es jetzt klappt.
Die Quelltexte habn vllt. 1min gedauert die zu schreiben, also ja.
Dein Array enthält ja auch Objekte der Klasse Lehrer, während die Methode gibMaennlichenVornamen() nur für Objekte der Klasse Personengenerator definiert ist.
Dementsprechend kannst du die Methode natürlich auch nicht über ein Lehrer-Objekt aufrufen.
Und ja, du kannst das schon so machen, dass du direkt auf das Attribut zugreifst, sofern der Zugriffsmodifizierer für das Attribut public ist. Wobei das im Hinblick auf die Datenkapselung nicht unbedingt sauber ist, da wäre ein Attribut mit private Modifzierer und eine public Getter-Funktion eleganter.
Jedenfalls wäre das in C++ so, wie das genau in java läuft weiß ich leider nicht, da ich nie Java gelernt habe.
Gut danke dir. Ja vllt kommen wir da auch noch hin mit dem setter/getter.
Sag mir lieber nicht wie lange du für sowas brauchst. Das deprimiert
Erstmal das andere einbauen jetzt. Vielen Dank schonmal :>
#edit:
@Muddy Waters
Ja wenn ihr das so sagt ist das schon logisch. Aber als Anfänger und allein kommt man da leider zu selten drauf -.-"
Ich glaub bei uns im Unterricht ist so einiges nicht ganz sauber. Vllt wird es dazu noch kommen.
Würdest du Eclipse zum Programmieren nutzen wäre der Fehler dir nicht passiert weil es direkt ne Fehlermeldung geben würde bzw. wenn man Objekt. schreibt kommt gleich eine Liste welche Methoden man mit dem Objekt benutzt kann, mit rückgabetypen usw.
Leider ist uns BlueJ vorgegeben. gefällt mir erlich gesagt auch nicht wirklich.
Die Sachen zuhause könnte ich ja theoretisch damit machen. Mal austesten.
Jetzt hab ich aber doch nochmal ne Frage:
Dies hier: hab ich zu dem gemacht:
PHP Code:
public void checkAnzahlUeberschneidungen(){ int anzahlUeberschneidungen = 0;
for (int i = 0; i < lehrerArray.length; i++) { for (int j = 0; j < schuelerArray.length; j++) { if(lehrerArray[i].vorname.equals(schuelerArray[i].vorname)){ anzahlUeberschneidungen++; break; } } }
System.out.println("Es gibt " + anzahlUeberschneidungen + " überschneidungen."); }
Das klappt auch wunderbar. Ich frag mich nur wie das inhaltlich ist:
Ich hab mal 100 Lehrer und 100 Schueler zum Test gemacht.
Raus kamen 5 Überschneidungen.
Jetzt weiß ich nicht:
5 Mal der gleiche Name eines Schuelers wie der eines Lehrers an der gleichen "Array Position"?
Beispielsweiße gibts 20 Schueler die zusammen die Namen Peter, Harry, Sebastian, Jonas und Jens haben. Also haben mehrere Schueler davon den Namen. Und dann gibts halt eine Anzahl Lehrer die den Namen auch haben.
Davon kanns ja auch wieder mehrere geben. Also die gleichen Überschneidungen wenn auch wenn mehrere Schueler und Lehrer den Namen haben.
Dann hätten sich bei 40 Personen ja 5 Namen überschnitten.
Oder ganz anders?
Ich hab mich schlecht ausgedrückt, sorry, aber ich kanns schlecht beschreiben -.-"
Bin dann ma zum Tennis. Bis später und danke für die Hilfe. Haltet mich nicht fürn Deppen :>
Du prüft alle Namen von den Lehrern mit den Namen von den Schülern. Da wir überhaupt nur prüfen ob es gleiche Namen gibt ist es uns egal ob es bei den Schülern 20x Patrick gibt oder nicht. Das würde nur bei den Lehrern eine Rolle spielen.
Dafür gibts halt jetzt zwei Lösungsmöglichkeiten:
Entferne vorübergehend alle Mehrfacheinträge bei den Lehrern und prüfe so mit dem neuen Array, oder erstell dir eine Liste mit den Lehrernamen die du schon überprüft hast und checke einfach bevor du den Namen mit dem Schülerarray vergleichst ob der Name schon in dem "habe schon den namen geprüft array" vorhanden ist, falls ja dann geh zum nächsten index, falls nicht prüf den namen.
Ich bin auch erstmal weg von daher gibts jetzt auch keinen Code :P
[Java] Code-Beispiele für String, Arrays und und... 06/02/2010 - Coding Tutorials - 9 Replies Joa, da ich Heute meine Informatik Prüfung in der Uni hatte ( und es sollte wohl min. eine 2 raus gekommen sein ) hatte ich Gestern so in ner Stunde einige Code Beispiele für verschiedene Dinge geschrieben. Eins war wie man Strings verarbeiten kann, was man mit Arrays anstellen kann und noch so paar Allgemeine Sachen zur Vererbung und Klassen.
Man sollte das hier nicht unbedingt als Tutorial sehen da ich euch eigentlich hier einfach nur Code reinhau den ihr direkt Ausführen könnt wenn ihr...
Hilfe in Info mit Arrays via Java 12/03/2009 - General Coding - 9 Replies Heho,ich sitz grad hilflos in Info.
Kann mir wer mit dieser Aufgabenstellung helfen?
Berechnen Sie die Fakultät bis 10! und speichern Sie sie in einem Array. (Unter 5! gesprochen "Fünf Fakultät", versteht man als 1*2*3*4*5=120.
Es wird definiert: 0! = 1)
wär nett,
lg