BlueJ: Preis mit Nachkommastellen?

2 Antworten

Double Preis = 25;kannst du z.B. verwenden.

Der primitive datentyp für ne Kommazahl ist double.

Ohne Variable einfach println("25.5");

Woher ich das weiß:Studium / Ausbildung – Informatik Studium

Hanspeter783 
Beitragsersteller
 06.03.2020, 21:43

Danke

0
  1. „das er einen speziellen Preis abruft“ – was soll das heißen? Jegliche Infos dazu fehlen.
  2. Strings werden in Java mit equals verglichen, sofern man sie nicht internt.

Hanspeter783 
Beitragsersteller
 06.03.2020, 21:34

Wir sollen einen Ticketautomaten programmieren. Der hat ja einen Grundpreis. Wir sollen aber bei bestimmten Städte einen anderen Preis machen

Hier der komplette Sourcecode:

public class Ticketautomat

{

   // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen

   private int preis;

   private int bisherGezahlt;

   private int gesamtsumme;

   

   private String linie;

   public Ticketautomat(int ticketpreis)

   {

       preis= ticketpreis;

       bisherGezahlt = 0;

       gesamtsumme = 0;

       linie = "BlueJ Line";

   }

   public void linieÄndern(String neueLinie)

   {

       linie = neueLinie;

       if (neueLinie=="München") {

           ?????

   }

}

   public void neuenPreisFestsetzen (int neuerPreis){

       if (bisherGezahlt==0){

           preis=neuerPreis;

       } else{

           System.out.println("Der Preis kann während einer Transaktion nicht geändert werden");

       }

   }

   public int gibPreis()

   {

       return preis;

   }

   public int gibGeldbestand()

   {

       return gesamtsumme;

   }

   public int gibBisherGezahltenBetrag()

   {

       return bisherGezahlt;

   }

   public void geldEinwerfen(int betrag)

   {

       if(betrag==10 || betrag ==20|| betrag==50|| betrag ==50|| betrag==100|| betrag==200||betrag==500||betrag==1000){

           bisherGezahlt= bisherGezahlt+betrag;

       } else{

           System.out.println("Der Betrag ist nicht zulässig. Bitte 10, 20 oder 50 Cent,1 Euro,2 Euro,5 Euro oder 10 Euro einwerfen");

       }

   }

   public void geldAuszahlen()

   {

       if (bisherGezahlt >0){

           System.out.println("Geldrückgabe:"+ bisherGezahlt);

           bisherGezahlt=0;

       }

   }

   public void ticketDrucken()

   {

       if(bisherGezahlt>=preis){

           System.out.println("##############");

           System.out.println("#Ticket");

           System.out.println("#"+linie);

           System.out.println("#"+preis+"Cent");

           System.out.println("###############");

           System.out.println();

           gesamtsumme= gesamtsumme + bisherGezahlt;

           bisherGezahlt= bisherGezahlt-preis;

           geldAuszahlen();

       }

   }

}

0
Hanspeter783 
Beitragsersteller
 06.03.2020, 21:39
@Hanspeter783

Vieleicht etwas konkreter:

Wie ändert man das es in Euro und nicht in Cent angezeigt wird?

0
321QWERTZ123  06.03.2020, 21:51
@Hanspeter783

Du musst es in Cent angeben, weil der Datentyp von preis int ist, wodurch nur Ganzzahlen in dieser Variable gespeichert werden können.

1
321QWERTZ123  06.03.2020, 22:07
@Hanspeter783

Was spricht denn dagegen, es weiterhin mit Cent zu machen? Zur Ausgabe kannst du den Wert ja umrechnen bzw. ein Komma einfügen. Ansonsten könnte man auch den Datentyp double für Fließkommazahlen verwenden. Dieser hat jedoch das Problem, dass Kommazahlen im Computer nicht im Dezimalsystem abgespeichert werden, was bei manchen Werten zu Rundungsfehlern führt. Das ist bei finanziellen Angelegenheiten natürlich fatal. Wenn es also unbedingt ein Fließkommazahlendatentyp sein muss, wäre BigDecimal angebracht – in der Schule wird man damit jedoch kaum in Kontakt kommen...

0
Hanspeter783 
Beitragsersteller
 06.03.2020, 22:09
@321QWERTZ123

Meine Lehrerin möchte da am Ende da Steht 25,50 Euro, aber wie bekmme ich das komma dahin ? Es funktioniert ja nur mit Punkt

0
321QWERTZ123  06.03.2020, 22:15
@Hanspeter783

Z. B. so (wenn der Preis in Cent gespeichert ist):

System.out.println(preis / 100 + "," + (preis % 100));

Sprich: der Centbetrag durch 100 geteilt (also der Eurobetrag), ein Komma und der Rest der Division durch 100 (also der Nachkommawert).

1