Der CHEMIE BIO PHYSIK, wenn´s sein muß auch MATHE Thread

oh mein gott, du bist mein held/schatz etc. etc. :D :D

ich wusste nicht dass man auch solche arrays erzeugen kann
im sinne von gast[]gaesteliste, dachte des wäre nur mit grundtypen möglich ,so wie String [] xy, oder int []xy, das macht das um einiges klarer.
kann dich grad nicht bewerten aber
ich kann dir nicht sagen wie sehr ich dir dankbar bin ^^ :D

fettes merci
 
Zuletzt bearbeitet von einem Moderator:
oh mein gott, du bist mein held/schatz etc. etc. :D :D

ich wusste nicht dass man auch solche arrays erzeugen kann
im sinne von gast[]gaesteliste, dachte des wäre nur mit grundtypen möglich ,so wie String [] xy, oder int []xy, das macht das um einiges klarer.
kann dich grad nicht bewerten aber
ich kann dir nicht sagen wie sehr ich dir dankbar bin ^^ :D

fettes merci

kein problem. macht spaß mal wieder java zu programmieren.
ich hab die klassen jetzt auch mal in eclipse reinkopiert um zu gucken ob alles läuft. ich hatte oben noch paar dumme fehler drin, wie z.b. das this in der klasse konzertverwaltung. solang du das aber statisch hälst funktioniert das nicht mit this.
kannst ja mal sagen wie es läuft und wie und wo du noch hilfe brauchst.

zu den arrays. du kannst ein array für alle klassen anlegen die existieren. und wenn du eben ne klasse gast, konzert oder topfenstrudel hast, dann kannst du eben auch entsprechende arrays anlegen :)
 
also das ausgeben der gästeliste wird funktionieren, wenn wir der klasse konzert noch ne methode verpassen, wie die gäste auf die gästeliste kommen (habs getestet)

ich ess aber erstma was.
dann kanns weitergehen ;)

dürft ihr eure klassen beliebig erweitern was hilfsvariablen - und methoden angeht? man bräuchte evtl die ein oder andere. außerdem isses hilfreich wenn du die kundennummern vom system vergeben lässt. erstens isses realistischer und zweitens kann man dann besser rechtfertigen, dass man an einer gewissen stelle davon ausgehen kann, dass die kundennummern von 1 an hochgezählt wurden, und dann macht das die programmierung teilweise einfacher ;)

am einfachsten isses natürlich wenn wir die anzahl besuchter konzerte und die kosten direkt in der klasse gast speichern und bei jeder konzertbuchung aktualisieren. weiß aber nicht ob das erlaubt ist
außerdem funktioniert es vom programmaufbau wohl nicht
 
Zuletzt bearbeitet von einem Moderator:
so hab mein programm jetzt nochmal upgedatet, hab in der klasse Konzert die variable anzahlGaeste weggelassen, dieses array mit der gästeliste hinzugefügt und dann noch die instanzvariablen mit den konzertdatenbanken in der main-methode hinzugefügt.

werd mich jetzt nochmal dransetzen und gut überlegen wies weitergeht, deine tipps waren auf jeden fall schon ne große hilfe bisher ^^.

wollt aber jetzt nochmal kurz was fragen, was heißt eigentlich
if(this.gaesteliste!=null)

heißt das falls die gästeliste nicht leer ist?

außerdem fällt mir grad auf, dass ich nicht weiß wie man pro konzert ne gästeliste erstellt. ich hab ja jetzt ne konzertdatenbank als array erstellt, anschließend 3 elemente (d.h. konzerte) festgelegt. jetzt muss ich ja pro element der konzertdatenbank nochmal festlegen, welche gäste auf diesen jeweiligen konzerten waren. bzw. muss ich ja den 3 elementen aus der konzertdatenbank jeweils immer elemente aus der kundendatenbank zuordnen (also meine 3 besucher bis jetzt). mir fällt grad auch nicht ein wie das gehen könnte.
 
hm es wurde in der angabe nichts explizit erwähnt, aber ich denke schon dass man beliebig hilfsvariablen/methoden erweitern kann, hauptsache das programm funktioniert am ende ^^.
das mit der automatischen vergabe der kundennummer könnte man auch machen, solange es nicht zu kompliziert wäre weil dann würden die glaub ich wissen dass ich das unmöglich selber programmiert habe :D

was ich vorhin geschrieben habe stimmt wohl nicht so, wie ichs nochmal überlegt hab.
ich hab ja gemeint dass man den elementen der konzertdatenbank jeweils elemente aus der kundendatenbank zuordnen muss, aber so einfach ist das doch nicht.
ich hab doch jetzt quasi ne kundendatenbank mit maximal 100 kunden. daraus muss ich maximal 5 auswählen für ne gästeliste, und diese 5 elemente der gästeliste widerum verteile ich auf die jeweiligen elemente der konzertdatenbank (in dem fall 3 elemente). :confused:

kann man nicht irgendwie schreiben:
kundendatenbank [0] = gaesteliste [0];
kundendatenbank [1] = gaesteliste [1];
usw. usf?
 
Zuletzt bearbeitet von einem Moderator:
if(this.gaesteliste!=null)

diese abfrage macht quasi das was du gesagt hast. sie prüft ob das i-te element der gästeliste besetzt ist. es könnte ja sein, dass bei einem konzert nur 3 leute auf der gästeliste stehen. man muss diesen etwas unschönen weg gehen, wenn man mit festen arrays arbeitet, da wir anders nicht erkennen können wieviel plätze des arrays belegt sind.

die gästeliste erstellst du, indem du einfach in der klasse konzert

private Gast[] gaesteliste = new Gast[5];

diese zeile da oben einfügst. somit enthält jedes konzert dass du erstellst automatisch eine gästeliste mit 5 plätzen, die aber erstma leer ist. die gästeliste muss man dann noch füllen. dazu sollte man eine methode in der klasse konzert schreiben, die in etwa so aussehen könnte

public void gastHinzufuegen(Gast neu){
boolean enthalten = false;
boolean eingefuegt = false;
if(anzahlGaeste<5){
for(int i=0; i<5 && !eingefuegt && !enthalten; i++){
if(this.gaesteliste!= null){
if(this.gaesteliste.getKundennummer()==neu.getKundennummer()){
enthalten = true;
System.out.println("Gast schon registriert");
}
}
else{
gaesteliste = neu;
anzahlGaeste++;
eingefuegt = true;
}
}
}
else
System.out.println("Konzert leider ausverkauft");
}

die methode prüft auch gleich ob die gästeliste voll ist oder ob ein gast für dieses konzert schon registriert ist und spuckt andernfalls ne entsprechende meldung aus.
 
Zuletzt bearbeitet von einem Moderator:
also ich hab jetzt nen lauffähiges programm. macht alles, was es soll.
ist zwar hier und da nicht ganz so sauber programmiert, aber für die zeit isses in ordnung ;)

das mit der automatischen kundennummernvergabe ist ganz einfach. ich hab in der klasse Gast ne statische variabel anzahl

private static int anzahl = 0;

die ich jedes mal um eins hochzähle, wenn ein neuer gast angelegt wird und diesen neuen wert vergebe ich dann als kundennummer. passiert alles im konstruktor wie unten zu sehen

public Gast (String nachname, String vorname, String adresse){
anzahl++;
this.kundennummer = anzahl;
this.nachname = nachname;
this.vorname = vorname;
this.adresse = adresse;
}

und so sieht jetzt bei mir ne fertige ausgabe aus

120210 50 Cent Olympiastadion 500.0
3 Gellar, Ross Central Perk 5
2 Tribbiani, Joey Central Perk 4

140210 Tokio Hotel Bruecke 600.5
3 Gellar, Ross Central Perk 5
1 Bing, Chandler Central Perk 3

150510 Rammstein Chinarestaurant 300.0
2 Tribbiani, Joey Central Perk 4

1 Bing, Chandler Central Perk 3 1 600.5
2 Tribbiani, Joey Central Perk 4 2 800.0
3 Gellar, Ross Central Perk 5 2 1100.5

erst die 3 konzerte mit ihren besuchern und dann eben die kundenauswertung

wenn du die klassen haben willst, sagste bescheid ;)
 
Zuletzt bearbeitet von einem Moderator:
oha das ist ja echt :confused:
des ist zwar echt ne gute lösung aber ich weiß nicht ob ich des verwenden darf. des scheint mir nämlich doch sehr kompliziert zu sein und ich glaub auch dass die mir des nie im leben abkaufen dass ich des selber geschrieben hab :(
gäbe es vllt. ne möglichkeit die oben geschriebene lösung abzuspecken?

/edit:

du bist ein genie :D
ja doch, ich bin sehr an den klassen interessiert, sitz heir nämlich seit mehreren tagen dran und weiß einfach nicht weiter :D
kannst mir ja quasi dein ganzes programm schicken, ich versuchs zumindest mal nachzuvollziehen bevor ich des dann abgebe, evtl. kann ich ja noch was verschönern falls ich was finden sollte ^^
 
Zuletzt bearbeitet von einem Moderator:
Klasse Gast

package testpack;

public class Gast {
private static int anzahl = 0;
private int kundennummer;
private String nachname;
private String vorname;
private String adresse;
private int besuchteKonzerte;

public Gast (String nachname, String vorname, String adresse){
anzahl++;
this.kundennummer = anzahl;
this.nachname = nachname;
this.vorname = vorname;
this.adresse = adresse;
}

public int getKundennummer(){
return kundennummer;
}

public String getNachname(){
return nachname;
}

public String getVorname(){
return vorname;
}

public String getAdresse(){
return adresse;
}

public void setKundennummer(int kundennummer){
this.kundennummer = kundennummer;
}

public void setNachname(String nachname){
this.nachname = nachname;
}

public void setVorname(String vorname){
this.vorname = vorname;
}

public void setAdresse (String adresse){
this.adresse = adresse;
}

public String toString(){
return this.kundennummer+"\t"+this.nachname+", "+this.vorname+"\t"+this.adresse;
}

}
 
Klasse Konzert

package testpack;

public class Konzert {

private int datum;
private String kuenstler, ort;
private double preis;
private int anzahlGaeste = 0;
private Gast[] gaesteliste = new Gast[5];

public Konzert (int datum, String kuenstler, String ort, double preis){

this.datum = datum;
this.kuenstler = kuenstler;
this.ort = ort;
this.preis = preis;
}

public int getDatum(){
return datum;
}

public String getKuenstler(){
return kuenstler;
}

public String getOrt(){
return ort;
}

public double getPreis(){
return preis;
}

public int getAnzahlGaeste(){
return anzahlGaeste;
}

public void setDatum(int datum){
this.datum = datum;
}

public void setKuenstler(String kuenstler){
this.kuenstler = kuenstler;
}

public void setOrt (String ort){
this.ort = ort;
}

public void setPreis (double preis){
this.preis = preis;
}

public void setAnzahlGaeste (int anzahlGaeste){
this.anzahlGaeste = anzahlGaeste;
}

public String gaestelisteAusgeben(){
String liste = "";
for(int i=0; i<5; i++){
if(this.gaesteliste!=null)
liste += gaesteliste + "\n";
}
return liste;
}

public String toString(){
return this.datum + "\t" + this.kuenstler + "\t" + this.ort + "\t" + this.preis;
}

public void gastHinzufuegen(Gast neu){
boolean enthalten = false;
boolean eingefuegt = false;
if(anzahlGaeste<5){
for(int i=0; i<5 && !eingefuegt && !enthalten; i++){
if(this.gaesteliste!= null){
if(this.gaesteliste.getKundennummer()==neu.getKundennummer()){
enthalten = true;
System.out.println("Gast schon registriert");
}
}
else{
gaesteliste = neu;
anzahlGaeste++;
eingefuegt = true;
}
}
}
else
System.out.println("Konzert leider ausverkauft");
}

public Gast[] getGaesteliste(){
return this.gaesteliste;
}

}
 
Klasse Konzertverwaltung

package testpack;

public class Konzertverwaltung {

private static Gast [] kundendatenbank = new Gast [100];
private static Konzert [] konzertdatenbank = new Konzert [100];
public static void main(String[] args) {

Gast g1 = new Gast ("Bing", "Chandler", "Central Perk 3");
Gast g2 = new Gast ("Tribbiani", "Joey", "Central Perk 4");
Gast g3 = new Gast ("Gellar", "Ross", "Central Perk 5");
kundendatenbank[0] = g1;
kundendatenbank[1] = g2;
kundendatenbank[2] = g3;

Konzert k1 = new Konzert (120210, "50 Cent", "Olympiastadion", 500.00);
Konzert k2 = new Konzert (140210, "Tokio Hotel", "Bruecke", 600.50);
Konzert k3 = new Konzert (150510, "Rammstein", "Chinarestaurant", 300.00);
konzertdatenbank[0] = k1;
konzertdatenbank[1] = k2;
konzertdatenbank[2] = k3;

k1.gastHinzufuegen(g3);
k2.gastHinzufuegen(g3);
k2.gastHinzufuegen(g1);
k1.gastHinzufuegen(g2);
k3.gastHinzufuegen(g2);
System.out.println(k1 + "\n" + k1.gaestelisteAusgeben());
System.out.println(k2 + "\n" + k2.gaestelisteAusgeben());
System.out.println(k3 + "\n" + k3.gaestelisteAusgeben());
kundenAuswertung();
}

private static void kundenAuswertung(){
double[][] kundentemp = new double[101][2];
for(int i=0; i<100; i++){
if(konzertdatenbank != null){
for(int j=0; j<5; j++){
if(konzertdatenbank.getGaesteliste()[j] != null){
kundentemp[konzertdatenbank.getGaesteliste()[j].getKundennummer()][0]++;
kundentemp[konzertdatenbank.getGaesteliste()[j].getKundennummer()][1] += konzertdatenbank.getPreis();
//System.out.println("KR: "+ konzertdatenbank.getGaesteliste()[j].getKundennummer());
}
}
}
}
for(int i=0; i<100; i++){
if(kundendatenbank != null){
System.out.println(kundendatenbank+"\t"+(int)kundentemp[i+1][0]+"\t"+kundentemp[i+1][1]);
}
}
}

}
 
hab aber noch nicht alles getestet, z.b. ob das klappt mit mehr als 5 gästen.
falls du noch fragen zu einzelnen methoden hast, sagste bescheid :)
 
oh man, sauber :D

ist aber übel wie kompliziert das geworden ist :confused: da wär ich mal nie und nimmer draufgekommen.
aber echt vielen dank, auch für die zeit die des in anspruch genommen hat. ist ja mal ne richtig madige aufgabe, die sie uns da gestellt haben :D
 
Was sind denn eigentlich die physikalischen Zusammehänge bei dem Effekt wenn sich beispielsweise ein Rad am Auto so schnell dreht, dass die Radkappe den anschein macht als würde sie sich nicht mehr bewegen.

Gibt das ja auch beim Plattenspieler wo am Plattentellerrand so Kreise sind die von ner Lampe beleuchtet werden. Diese Kreise scheinen ja auch bei ner bestimmten Umdrehungszahl des Plattentellers zu "stehen". Hierbei hängt das glaub ich von der Frequenz der Lampe ab (stroboskopeffekt?!) aber wie ist das denn bei der Radkappe? Die wird mit Sonnenlicht bestrahlt(was natürlich auch ne gewisse Frequenz hat)... oder hat das was mit der Frequenz zu tun mit der das Auge sieht.
Ist das irgendwas mit Schwebung oder stehender Welle?!

:confused: :D
 
ich würde sagen, das liegt daran, dass das Auge nur 24 (oder so) Einzelbilder pro Sekunde erkennen kann. Und wenn sich der Reifen dann eben genau so schnell dreht, dass er bei jedem einzelbild an der selben Stelle ist, dann erscheints eben so als würde er stehen...

Ist also eher biologie als Physik :p , ist aber auch nur meine Theorie dazu, bin mir aber recht sicher...
 
ich hätte leider nochmal ne frage zu meinem letzten java-programm:

da es einfach zu gut von chin82 geschrieben worden ist, muss ich das ganze leider etwas abspecken weil die tutoren mir sonst nie im leben abkaufen würden, dass ich das selber gemacht habe, und dann gäbe es stress.

ich habe folgendes noch geändert.
und zwar hast du@chin82 ja in der klasse konzert ne methode hinzugefügt um bei der gästeliste neue gäste hinzuzufügen. da ich es leider nicht so übernehmen kann, hab ich mir gedacht, ob man neue gäste nicht mit einer art set-methode hinzufügen kann?

ich hab jetzt geschrieben:

public class Konzert {

private int datum;
private String kuenstler, ort;
private double preis;
private int anzahlGaeste = 0;
private Gast[] gaesteliste = new Gast[5];

public Konzert (int datum, String kuenstler, String ort, double preis){

this.datum = datum;
this.kuenstler = kuenstler;
this.ort = ort;
this.preis = preis;
this.gaesteliste = gaesteliste;
}

public int getDatum(){
return datum;
}

public String getKuenstler(){
return kuenstler;
}

public String getOrt(){
return ort;
}

public double getPreis(){
return preis;
}

public int getAnzahlGaeste(){
return anzahlGaeste;
}

public Gast[] getGaesteliste(){
return this.gaesteliste;

}



public void setDatum(int datum){
this.datum = datum;
}

public void setKuenstler(String kuenstler){
this.kuenstler = kuenstler;
}

public void setOrt (String ort){
this.ort = ort;
}

public void setPreis (double preis){
this.preis = preis;
}

public void setGaesteliste (Gast[] gaesteliste){
this.gaesteliste = gaesteliste;
}



}

das was ich verändert hab hab ich mal fett markiert. der grund wieso ich das gemacht hab war unter anderem auch, dass auch in der angabe stand: "Gästeliste, array der länge 5 vom typ gast. Die set-Methode hierfür setzt nicht das ganze Array, sondern fügt nur einen neuen Gast zum Array hinzu, solange noch keine 5 Gäste registriert sind") (hätt ich wohl vllt. schon letztes mal noch anfügen sollen)

in der ausführbaren klasse konzertverwaltung hab ich auch folgendes probiert

public class Konzertverwaltung {


public static void main(String[] args) {

Gast [] kundendatenbank = new Gast [100];
Konzert [] konzertdatenbank = new Konzert [3];
Gast g1 = new Gast ( "Bing", "Chandler", "Central Perk 3");
Gast g2 = new Gast ( "Tribbiani", "Joey", "Central Perk 4");
Gast g3 = new Gast ( "Gellar", "Ross", "Central Perk 5");
kundendatenbank[0] = g1;
kundendatenbank[1] = g2;
kundendatenbank[2] = g3;

Konzert k1 = new Konzert (120210, "50 Cent", "Olympiastadion", 500.00);
Konzert k2 = new Konzert (140210, "Tokio Hotel", "Bruecke", 600.50);
Konzert k3 = new Konzert (150510, "Rammstein", "Chinarestaurant", 300.00);
konzertdatenbank[0] = k1;
konzertdatenbank[1] = k2;
konzertdatenbank[2] = k3;

k1.setGaesteliste(g3);
k2.setGaesteliste(g3);
k2.setGaesteliste(g1);
k1.setGaesteliste(g2);
k3.setGaesteliste(g2);




}
}

usw. der rest kommt dann später. jetzt wollt ich fragen: das fett markierte so wie ich das geschrieben hat, geht anscheinend nicht. es erscheint die fehlermeldung:

setGaesteliste(Gast[]) in Konzert cannot be applied to (Gast)
k1.setGaesteliste(g1);

wie kann ich denn nun gäste aus der gästeliste auf das jeweilige konzert setzen?

dabei muss ich noch hinzufügen dass ich dein programm auf jeden fall gespeichert hab und des auch super läuft, nur ist es wie gesagt zu gut geschrieben, sodass ich des nur im notfall, falls ich heute bis 24 uhr keine andere lösung hinkriege, abschicken werde :D
 
Zuletzt bearbeitet von einem Moderator:
also ich kann dir versichern, dass ich definitiv keine zauberdinge programmiert habe, soll heißen es ist eigentlich kein überragendes programm. das was eigentlich am weitesten fortgeschritten war von der programmierung war das überschreiben der toString()-Methode. da weiß ich noch nicht ob ihr sowas schon kennt. ein überschreiben einer schon existierenden methode ist kein wunderding, aber dass es diese option gibt etc. das macht man eben nicht gleich am anfang wenn man java lernt.

jetzt zu deiner abänderung. die kann nicht funktionieren. ich erkläre dir wieso.
nehmen wir erstmal den konzertkonstruktor

public Konzert (int datum, String kuenstler, String ort, double preis){

this.datum = datum;
this.kuenstler = kuenstler;
this.ort = ort;
this.preis = preis;
this.gaesteliste = gaesteliste;
}

wie soll die letzte zeile funktionieren? du übergibst dem konstruktor ja gar keine gästeliste. brauchst du ja aber auch nicht. mit jedem konzert was du erstellst bekommt dieses automatisch eine gästeliste hinzugefügt, die vom typ gast ist, aber zunächst mal leer. das ganze stellt diese zeile sicher

private Gast[] gaesteliste = new Gast[5];

so jetzt zu deiner set-methode. du schreibst folgendes

public void setGaesteliste (Gast[] gaesteliste){
this.gaesteliste = gaesteliste;
}

und rufst die methode dann mit

k1.setGaesteliste(g3);

auf. das kann nicht funktionieren. deine setGaesteliste-methode erwartet als übergabeparameter ein ARRAY vom typ gast und du übergibst ein EINZELNES gast-objekt. das geht eben nicht. fakt ist, dass du eine methode in der klasse konzert brauchst, die einen einzelnen gast übergeben bekommt. das folgt schon aus der aufgabenstellungen, da du ja einzelne buchungen verarbeiten können sollst. und wenn da jetzt herr meyer zu tokio hotel will, dann ist das ein einzelner gast, der auf die gästeliste vom tokio-hotel konzert soll. wenn dir meine methode gastHinzufuegen zu kompliziert ist, dann können wir die abspecken, aber sie ist dann nicht mehr so robust, d.h. du man muss selbst sicherstellen, dass nicht ein gast zweimal auf der gästeliste steht oder man muss es einfach zulassen. die methode könnte dann so aussehen:

public void gastHinzufuegen(Gast neu){
for(int i=0; i<5; i++){
if(this.gaesteliste== null){
gaesteliste = neu;
}
}

oder wenn du es noch einfacher haben willst, dann zählst in der variable anzahlGaeste mit, wieviel leute auf deiner gästeliste schon stehen und dann weißt du automatisch an welcher position du den neuen gast speichern musst. das sieht dann so aus

public void gastHinzufuegen(Gast neu){
this.gaesteliste[anzahlGaeste] = neu;
anzahlGaeste++;
}

ich denke das sollte nicht mehr so kompliziert aussehen ;)

achja, wenn du meinen vorschlag ganz unten umsetzt, musst du auch selbst aufpassen, dass du nicht mehr als 5 leute auf ein konzert buchst, da sonst dein programm mit einer arrayoutofbounds-exception abbricht.

wenn noch weitere fragen offen sind, einma guck ich heut bestimmt nochma hier rein
 
Zuletzt bearbeitet von einem Moderator:
hm ich habs verstanden :) vielen dank.
die einzigen kritischen stellen sind eigentlich einmal die tostring methode da wir die noch nicht hatten, und dann noch die kundentemp methode, die du geschrieben hast. die sieht sehr nach "fortgeschrittenem" niveau aus, ich weiß nicht ob die mir abkaufen würden dass ich da selber draufgekommen bin. :D aber da ich absolut keine ahnung hab wie ich des sonst machen würde bzw. wie ich des abspecken soll, hab ichs einfach mal so übernommen.

desweiteren ist des mit dem null so ein problem, was schon komisch war. da wir das mit == oder !=null noch nicht hatten, hab ich versucht die jeweiligen zeilen zu entfernen, zu beginn hat das programm tatsächlich auch funktioniert, allerdings trat dann urplötzlich so ne nullpointerexception auf.
 
Zurück
Oben Unten