ich hab ne aufgabe die mir echt schwer fällt weil ich erst seit paar tagen mit java programmiere oder besser gesagt mit blueJ und so auch keine vorkenntnisse in sachen programmieren habe... und zwar soll ich einen Ticketautomaten programmieren aus interner sicht... ich versuch seit 2 tagen das zu schaffen das er mir das ausrechnet aber irgendwie seh ich da auch nicht ganz durch mit den zusammenhängen und wie man blueJ zum sinnvollen rechnen bringt... und zwar hab ich mir das so gedacht das es einen festen preis gibt für das ticket(ich möchte das es 20 euro kostet) dann soll man noch auswählen können wie viele tickets man kaufen will und ausserdem soll berücksichtigt werden wie viel schon eingezahlt wurde und später soll er mir den zu zahlenden betrag ausrechnen...
und so sieht mein loch aus wo ich feststecke und nicht weiter komme
Java:
publicclassTicketautomat{// Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablenprivateint preis;privateint bisherGezahlt;privateint gesamtsumme;privateint anzTickets;/**
* Konstruktor für Objekte der Klasse Ticketautomat
*/publicTicketautomat(int bisherGezahlt,int anzTickets){
preis =20;
bisherGezahlt =0;
gesamtsumme =0;
anzTickets =0;}//Ticketautomat// Zugriffsmethodenpublicint getbisherGezahlt (){return bisherGezahlt;}publicint getgesamtsumme (){return gesamtsumme;}publicint getanzTickets (){return anzTickets;}// Verarbeitungpublicvoid setPreis (int neu){
preis = neu;}//setPreis//Ausgabepublicvoidausgabe(){System.out.println("Preis="+ preis+"Geldsumme="+anzTickets);}//ausgabe}
über fehlerhinweise die fehlerzahl wird bestimmt ziemlich hoch sein, wäre ich sehr erfreut und auch über mögliche tipps wie man es besser machen kann
Ich versteh deinen Konstruktor nicht, bzw. wozu du die beiden Parameter bisherGezahlt und anzTickets übergibst, zumal du diese Werte gar nicht benutzt.
Ich würde die beiden Parameter aus dem Konstruktor streichen und stattdessen zwei weitere Methoden erstellen: geldEinzahlen(int geld) und anzahlTicketsSetzen(int anzahlTickets), die die entsprechenden Instanzvariablen aktualisieren (falls das die Aufgabenstellung nicht anders vorsieht)
Deine ausgabe() Methode ist unvollständig, da 1. der Gesamtpreis ergibt sich aus anzahlTickets * preis (du gibst nur anzTickets aus). Außerdem fehlt noch der noch zu zahlende Betrag (gesamtpreis - bereitsEingezahltesGeld).
danke ja so wie du sagst ist es schon besser formuliert danke die ausgabe zu programmieren ist für mich irgendwie nicht verständlich wie schreibe ich denn soeine ausgabe wenn ich ein * zeichen in den system.out. rein hau denn schmeißt er mir ne fehlermeldung
Man soll hier ja auch etwas lernen. Und außerdem ist es ja nicht kompliziert ich denke da kommt man relativ schnell selbst drauf. Lieber 10 min länger überlegen und es nächstes mal gleich wissen, anstatt nächstes mal wieder nachfragen zu müssen
naja ich denke er hat sich hier schon gedanken gemacht bevor er hier was postet. außerdem ist es ja nur ein angebot, wenn er nicht will brauch er ja auch nicht
also ich weiß nicht inwiefern du schon mit dem Scanner bzw dem BufferedReader vertraut bist aber das könnte die Angelegenheit sehr erleichtern also quasi so:
mainMethode {
Preis pro Ticket festlegen
AnzahlTickets abfragen und auslesen
Einzahlung abfragen und auslesen
Nun Gesamtsumme, sowie den noch zu bezahlenden Betrag ausrechnen
Gesamtsumme und noch zu bezahlenden Betrag ausgeben
}
Die komplette Lösung ist im BlueJ-Buch von Barnes / Kölling zu finden, das in den Schulen häufig eingesetzt wird. Der Ticket-Automat wird da ausführlich besprochen.
für 2 tage java eine beachtliche leistung, ich finde aber auch wie schon vorher von jemand anderem erwähnt, du solltest es wegen des lerneffekts selbst herausfinden, ich habe dir hierfür mal eine andere version geschrieben, im grunde zwar funktionsfähig, doch einige methoden werden z.B. nie aufgerufen, andere methoden fehlen noch und Exceptionhandling ist ebenfalls nicht dabei. Allerdings hoffe ich, dass du dies einfach mal in eine Datei kopierst und ausprobierst bzw. erweiterst. Tja dann viel spaß, hoffe ich konnte dir etwas helfen.
Die Datei Ticketautomat.java
Java:
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassTicketautomat{privateint preis;// preis des einzelticketsprotectedint bisherBezahlt =0;// wieviel tickets hat man bisher bezahltprotectedint gesammtkosten =0;// gesamtkosten der ticketsprotectedint anzahlTickets =0;//anzahl der gekauften ticketspublicTicketautomat(int preis){// Konstruktor des ticketsthis.preis = preis;// hier wird der preis eines einzelnen tickets gesetzt }publicintgetPreis(){returnthis.preis;}publicintgetBisherBezahlt(){returnthis.bisherBezahlt;}publicvoidsetBisherBezahlt(int bezahlt){this.bisherBezahlt = bezahlt;}publicvoidbezahlen(int betrag){setBisherBezahlt(getBisherBezahlt()+ betrag);}publicintgetGesamtkosten(){returnthis.gesammtkosten;}publicvoid setGesamtkosten (int betrag){this.gesammtkosten = betrag;}publicintgetAnzahlTickets(){returnthis.anzahlTickets;}publicvoidsetAnzahlTickets(int anzahl){this.anzahlTickets = anzahl;}}classTickettest{publicstaticvoidmain(String[]args)throwsIOException{Helper.welcome();}}classHelper{publicstaticvoidwelcome()throwsIOException{// Aufruf des Konstruktors mit einem Ticketpreis von 20 EuroTicketautomat t1 =newTicketautomat(20);// Buffered Reader wird benutzt um Strings von der Konsole einzulesenBufferedReader in =newBufferedReader(newInputStreamReader(System.in));System.out.println("+++--- Willkommen ---+++");System.out.println("wie viele Tickets möchten Sie erwerben?:");// setAnzahlTickets erwartet Daten vom Typ Int gegeben sind allerdings Daten vom Typ String// deswegen Integer.parseInt dies wandelt sofern es nur eine einfache Zahl ist ein String in einen Integer um
t1.setAnzahlTickets(Integer.parseInt(in.readLine()));System.out.println("Sie wollen "+ t1.getAnzahlTickets()+" erwerben");// Multiplikation mit Java bei der Ausgabe System.out.println("Somit wäre ein Gesamtbetrag von "+(t1.getAnzahlTickets()* t1.getPreis())+" Euro faellig");System.out.println("Bitte geben Sie ein, wieviel Euro Sie bezahlen:");
t1.setBisherBezahlt(Integer.parseInt(in.readLine()));System.out.println("Ihnen werden "+(t1.getBisherBezahlt()/ t1.getPreis())+" Tickets ausgehändigt");}}