BlueJ: Preis mit Nachkommastellen?
Wie bekomme ich es so hin, dass, wenn bei dem Int "München" eingegeben wird, ein spezieller Preis abgerufen wird?
Hier mein bisher vorhandener Quellcode:
public void linieÄndern(String neueLinie) {
linie = neueLinie;
if (neueLinie == "München") {
// ???
}
}
Der Preis soll 25,50 Euro betragen.
Kann mir da jemand helfen?
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");
- „das er einen speziellen Preis abruft“ – was soll das heißen? Jegliche Infos dazu fehlen.
- Strings werden in Java mit equals verglichen, sofern man sie nicht internt.
Vieleicht etwas konkreter:
Wie ändert man das es in Euro und nicht in Cent angezeigt wird?
Du musst es in Cent angeben, weil der Datentyp von preis int ist, wodurch nur Ganzzahlen in dieser Variable gespeichert werden können.
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...
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
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).
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();
}
}
}