Fehlersuche-kann mir jemand helfen?

Garfild2015

Aktives Mitglied
Ich suche verzweifelt den Fehler, warum dieser Tickeautomat nicht die richtige
gesammtsumme ausgibt.
findet ihn jemand und kann ihn mir vielleicht verbessern?


Die Gesamtsumme sollte = Kinderticket+Erwachsnenetickets *Linie sein , aber das funktioniert nicht ganz :)



Code:
public class Ticketautomat
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int preis;
    private int bisherGezahlt;
    private int gesamtsumme;
    private int ticketpreis;
    public int kindertickets;
    public int erwachsenentickets;
    public int streckenpreis;
    public int neuerPreis;
 
    private String linie;
    private String name;
    public Ticketautomat()
    {
 
        preis = ticketpreis;
        preis=540;
        
        
        erwachsenentickets= 0;
        kindertickets = 0;
        bisherGezahlt = 0;
        gesamtsumme = 0;
        linie = "Gelsenkirchen";
 
        name = "Person";
    }
 
    public void KinderTickets(int neueKindertickets){
        kindertickets=neueKindertickets;
        preis= (neueKindertickets*preis)/2;
 
    }
 
    public void Erwachsenetickets(int neueErwachsenentickets){
        erwachsenentickets=neueErwachsenentickets;
        preis=preis;
    }
 
    public void linieÄndern(String neueLinie)
    {
        linie = neueLinie;
 
        if("München".equals(neueLinie)){
            preis=2550;
 
        }
        if("Hamburg".equals(neueLinie)){
            preis=1550;   
        }
        if("Düsseldorf".equals(neueLinie)){
            preis=750;   
        }
        if("Stutgart".equals(neueLinie)){
           preis=850;   
        }
        if("München".equals(neueLinie)){
            preis=1050;   
        }
        if("Berlin".equals(neueLinie)){
           preis=1280;   
        }
        
 
    }
 
    public void neuenPreisFestsetzen(int neuerPreis)
    {
        if(bisherGezahlt==0){
            preis=neuerPreis;
        }else{
            System.out.println("Der Preis kann während einer Tranaktion nicht geändert werden");
 
        }
    }
 
    public int gibPreis()
    {
        return preis;
    }
 
 
    
 
    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 personaliesierung(String neuerName){
        name = neuerName ;
    }
 
    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("#Datum:07.03.2020 Uhrzeit: 13:00Uhr  #");
            System.out.println("Name:"+name);
            System.out.println("# Von:Gladbeck Nach:"+linie+ "                          #");
 
            System.out.println("#"+ preis/100 +","+ (preis %100)+"Euro");                         
            System.out.println("######################################");
            System.out.println();
 
            gesamtsumme= gesamtsumme + bisherGezahlt;
            bisherGezahlt= bisherGezahlt-preis;
 
            geldAuszahlen();
 
        }
 
        else if (bisherGezahlt<preis)  {
            int fehlt;
            fehlt= preis-bisherGezahlt;
            System.out.println("Es fehlt noch"+ fehlt+ "Cent!");
            System.out.println();
 
        }
 
    }
}
 

MoxxiManagarm

Top Contributor
Dein Code ergibt für mich insgesamt keinen Sinn. Das liegt hauptsächlich daran, dass du 'preis' für alles Mögliche verwendest. Ist es der Preis für die Strecke? Ist es der zu zahlende Preis? Das kommt nicht klar raus und ich glaube du vermischst es hier auch.
 

MoxxiManagarm

Top Contributor
Code:
public void linieÄndern(String neueLinie) {
    linie = neueLinie;

    if("München".equals(neueLinie)){
        preis=2550;

    }
    if("Hamburg".equals(neueLinie)){
        preis=1550;
    }
    if("Düsseldorf".equals(neueLinie)){
        preis=750;
    }
    if("Stutgart".equals(neueLinie)){
        preis=850;
    }
    if("München".equals(neueLinie)){
        preis=1050;
    }
    if("Berlin".equals(neueLinie)){
        preis=1280;
    }
}

Außer ganz ehrlich, alleine bei dieser Methode krümmen sich meine Zehennägel :D
Besser wäre ein switch-Case (oder ne Map oder sowas), weil du irgendwie auch einen default/Error Case benötigst. Was passiert, wenn die neueLinie von keinem if angesprochen wird? Du hast hier auch 2x München drin und Stuttgart fehlt ein t.
 

Garfild2015

Aktives Mitglied
Code:
public void linieÄndern(String neueLinie) {
    linie = neueLinie;

    if("München".equals(neueLinie)){
        preis=2550;

    }
    if("Hamburg".equals(neueLinie)){
        preis=1550;
    }
    if("Düsseldorf".equals(neueLinie)){
        preis=750;
    }
    if("Stutgart".equals(neueLinie)){
        preis=850;
    }
    if("München".equals(neueLinie)){
        preis=1050;
    }
    if("Berlin".equals(neueLinie)){
        preis=1280;
    }
}

Außer ganz ehrlich, alleine bei dieser Methode krümmen sich meine Zehennägel :D
Besser wäre ein switch-Case (oder ne Map oder sowas), weil du irgendwie auch einen default/Error Case benötigst. Was passiert, wenn die neueLinie von keinem if angesprochen wird? Du hast hier auch 2x München drin und Stuttgart fehlt ein t.

Wir haben gerade erst angefangen mit dem programmieren, bis uns Corona unterbrochen hat :)
Das haben wir noch mit unsere Lehrerin gemacht.
 

LimDul

Top Contributor
Der Code ist wie schon erwähnt was Preis Handling angeht komplett unbrauchbar.

Fragen, die du mal beantworten solltest:
* Wo wird der Gesamtpreis gespeichert?
* Wo wird der Preis für das gewählte Ziel gespeichert?
* Wo der Preis für ein Kinderticket gespeichert?
* Wo wird der Preis für ein Erwachsenenticket gespeichert?
* Wo wird die Anzahl der Erwachsenentickets gespichert?
* Wo wird die Anzahl der Kindertickets gespeichert?

Bei dir wird 1 bis 4 gleichzeitig wie es aussieht in "Preis" gespeichert - dass kann nicht funktionieren.
 

MoxxiManagarm

Top Contributor
1588930327819.png

Eine gute IDE zeigt übrigens auch, welche Parameter gar nicht verwendet werden. Diese sind hier grau. Spätestens wenn man sowas sieht ist irgendwas verkehrt meistens :) Und auf Grund des Geheimhaltungsprinzips sollten letzte 4 Attribute auch bitte nicht public sein.
 

Garfild2015

Aktives Mitglied
Der Code ist wie schon erwähnt was Preis Handling angeht komplett unbrauchbar.

Fragen, die du mal beantworten solltest:
* Wo wird der Gesamtpreis gespeichert?
* Wo wird der Preis für das gewählte Ziel gespeichert?
* Wo der Preis für ein Kinderticket gespeichert?
* Wo wird der Preis für ein Erwachsenenticket gespeichert?
* Wo wird die Anzahl der Erwachsenentickets gespichert?
* Wo wird die Anzahl der Kindertickets gespeichert?

Bei dir wird 1 bis 4 gleichzeitig wie es aussieht in "Preis" gespeichert - dass kann nicht funktionieren.


Könne sie mir sagen, was ich dann ändern soll ?
 

MoxxiManagarm

Top Contributor
Könne sie mir sagen, was ich dann ändern soll ?

Eigentlich brauchst du nur 3 Attribute statt 8 (zumindest aus meiner Sicht)

- Preis für die ausgewählte Strecke: wird gesetzt bei Streckenauswahl
- Zu zahlender Preis: Wird bei Kind um n*Streckenpreis/2 und bei Erwachsenen um n*Streckenpreis erhöht
- Gezahlter Preis: Wird bei Münzeinwurf erhöht

Du hast eine überschaubare Anzahl an Events, welche du als Methoden darstellen kannst:
- Strecke auswählen
- Kindticket hinzufügen (ggf. auch entfernen)
- Erwachsenenticket hinzufügen (ggf. auch entfernen)
- Münze einwerfen
- Ticket Drucken
- Geldrückgabe
- (ggf. Abbrechen)
- ...

Also Statement: Reduziere deinen Code auf das nötigste.
 
K

kneitzel

Gast
Variablen sauber definieren und entsprechend nutzen!

Spiel doch einfach einmal durch, wie sich preis verändert, wenn ich Kindertickets bestelle:
- Ich will 10.
- Ach nein, ich will 20!
- Ach nein - doch nur 1!

==> Was ist dann der Preis?

Nutz klare Begriffe:
- linienPreis für den Preis eines Erwachsenentickets für die Linie würde ich zuerst einführen bzw. preis umbenennen.
- Dann schaust Du Dir den Code an. Beim setzen der Anzahl der Kindertickets ist der Linienpreis natürlich nicht anzupacken. Und: Wenn ich einen Aufruf setzeKinderTickets (Nur "KinderTickets" besagt nichts. Methoden bitte immer mit Verb, damit sie aussagen, was sie machen) sehe, dann erwarte ich, dass diese Methode nur die KinderTickets setzt. Aber nicht irgend einen Preis!
- Den Gesamtpreis brauchst Du dann nicht wirklich, denn den kannst Du immer berechnen: anzahlErwachsenentickets * linienPreis + anzahlKinderTickets * linienPreis / 2. (Hier kannst Du auch erkennen: kinderTickets ist kein guter Name - da steht ja eine Anzahl drin und keine Tickets!)
 

Garfild2015

Aktives Mitglied
Eigentlich brauchst du nur 3 Attribute statt 8 (zumindest aus meiner Sicht)

- Preis für die ausgewählte Strecke: wird gesetzt bei Streckenauswahl
- Zu zahlender Preis: Wird bei Kind um n*Streckenpreis/2 und bei Erwachsenen um n*Streckenpreis erhöht
- Gezahlter Preis: Wird bei Münzeinwurf erhöht

Du hast eine überschaubare Anzahl an Events, welche du als Methoden darstellen kannst:
- Strecke auswählen
- Kindticket hinzufügen (ggf. auch entfernen)
- Erwachsenenticket hinzufügen (ggf. auch entfernen)
- Münze einwerfen
- Ticket Drucken
- Geldrückgabe
- (ggf. Abbrechen)
- ...

Also Statement: Reduziere deinen Code auf das nötigste.
Code:
Ich fange mal vorne an. Was halten sie von dieser Methode für den Streckenpreis?


public class Ticketautomat{
    int streckenpreis;
    String  linie;
    public void Streckenauswahl(String neueLinie)
    {
        linie = neueLinie;

        if("München".equals(neueLinie)){
            streckenpreis=2550;

        }
        if("Hamburg".equals(neueLinie)){
            streckenpreis=1550;   
        }
        if("Düsseldorf".equals(neueLinie)){
            streckenpreis=750;   
        }
        if("Stutgart".equals(neueLinie)){
            streckenpreis=850;   
        }
        if("München".equals(neueLinie)){
            streckenpreis=1050;   
        }
        if("Berlin".equals(neueLinie)){
            streckenpreis=1280;   
        }

    }
}
 
K

kneitzel

Gast
Da du ja etwas lernen sollst, zeige ich Dir einfach einmal das switch auf Strings:
Code:
public class Ticketautomat{
    int streckenpreis;
    String  linie;
    public void Streckenauswahl(String neueLinie)
    {
        switch (neueLinie) {
            case "München":
                streckenpreis=2250;
                break;
                
            case "Hamburg":
                streckenpreis=1550;
                break;

            case "Düsseldorf":
                streckenpreis=750;
                break;

            case "Stuttgart":
                streckenpreis=850;
                break;

            case "Berlin":
                streckenpreis=1250;
                break;
                
            default:
                // Hier noch eine Fehlermeldung ausgeben!
                return; // return statt break um die Methode zu verlassen.
        }
        
        linie = neueLinie;
    }
}
 

Garfild2015

Aktives Mitglied
Da du ja etwas lernen sollst, zeige ich Dir einfach einmal das switch auf Strings:
Code:
public class Ticketautomat{
    int streckenpreis;
    String  linie;
    public void Streckenauswahl(String neueLinie)
    {
        switch (neueLinie) {
            case "München":
                streckenpreis=2250;
                break;
               
            case "Hamburg":
                streckenpreis=1550;
                break;

            case "Düsseldorf":
                streckenpreis=750;
                break;

            case "Stuttgart":
                streckenpreis=850;
                break;

            case "Berlin":
                streckenpreis=1250;
                break;
               
            default:
                // Hier noch eine Fehlermeldung ausgeben!
                return; // return statt break um die Methode zu verlassen.
        }
       
        linie = neueLinie;
    }
}

Fehlermeldung im Sinne von "Diese Strecke ist nicht vorhanden "?
Sollte man da nicht lieber einen "Standardpreis" eingeben, damit immer ein Preis vorhanden ist ?
 

MoxxiManagarm

Top Contributor
Java:
public class Reise {
    enum Reiseziel {
        München(2250),
        Hamburg(1550),
        Düsseldorf(750),
        Stuttgart(850),
        Berlin(1250);

        private int streckenpreis;

        private Reiseziel(int streckenpreis) {
            this.streckenpreis = streckenpreis;
        }
    }

    
  public static void main(String[] args) {
    System.out.println("Bitte wähle eine Strecke");

    for (int i = 0; i < Reiseziel.values().length; i++) {
        Reiseziel moeglichesReiseziel = Reiseziel.values()[i];
        System.out.println(i + ": " + moeglichesReiseziel.name());
    }
    try {
        int auswahl = new Scanner(System.in).nextInt();
        Reiseziel gewaehltesReiseziel = Reiseziel.values()[auswahl];
        System.out.println("Streckenpreis von " + gewaehltesReiseziel.streckenpreis + " für das Reiseziel " + gewaehltesReiseziel.name());
    } catch (ArrayIndexOutOfBoundsException | InputMismatchException e) {
        System.out.println("Ungültige Auswahl.");
    }
}
}

Ausgabe:
Code:
Bitte wähle eine Strecke
0: München
1: Hamburg
2: Düsseldorf
3: Stuttgart
4: Berlin
0
Streckenpreis von 2250 für das Reiseziel München



Du kannst die Enum dann beliebig erweitern ohne den Rest anfassen zu müssen. Also jedes weitere mögliche Reiseziel ist nur eine Zeile Code
 

Garfild2015

Aktives Mitglied
Bei mir zeigt das Programm noch Fehler an, muss ich noch irgendwas als import drüber schreiben ?




Java:
public class Reise {
    enum Reiseziel {
        München(2250),
        Hamburg(1550),
        Düsseldorf(750),
        Stuttgart(850),
        Berlin(1250);

        private int streckenpreis;

        private Reiseziel(int streckenpreis) {
            this.streckenpreis = streckenpreis;
        }
    }

   
  public static void main(String[] args) {
    System.out.println("Bitte wähle eine Strecke");

    for (int i = 0; i < Reiseziel.values().length; i++) {
        Reiseziel moeglichesReiseziel = Reiseziel.values()[i];
        System.out.println(i + ": " + moeglichesReiseziel.name());
    }
    try {
        int auswahl = new Scanner(System.in).nextInt();
        Reiseziel gewaehltesReiseziel = Reiseziel.values()[auswahl];
        System.out.println("Streckenpreis von " + gewaehltesReiseziel.streckenpreis + " für das Reiseziel " + gewaehltesReiseziel.name());
    } catch (ArrayIndexOutOfBoundsException | InputMismatchException e) {
        System.out.println("Ungültige Auswahl.");
    }
}
}

Ausgabe:
Code:
Bitte wähle eine Strecke
0: München
1: Hamburg
2: Düsseldorf
3: Stuttgart
4: Berlin
0
Streckenpreis von 2250 für das Reiseziel München



Du kannst die Enum dann beliebig erweitern ohne den Rest anfassen zu müssen. Also jedes weitere mögliche Reiseziel ist nur eine Zeile Code
Code:
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Ticketautomat{
    int streckenpreis;
    String  linie;
    public class Reise {
        enum Reiseziel {            Fehler wird angezeigt:enum declaration allowed onlin in static contexts
            München(2250),
            Hamburg(1550),
            Düsseldorf(750),
            Stuttgart(850),
            Berlin(1250);

            private int streckenpreis;

            private Reiseziel(int streckenpreis) {
                this.streckenpreis = streckenpreis;
            }
        }

        public static void main(String[] args) {          Fehler wird angezeigt:Illegal staic declaration in inner class Ticketautomat
            System.out.println("Bitte wähle eine Strecke");

            for (int i = 0; i < Reiseziel.values().length; i++) {
                Reiseziel moeglichesReiseziel = Reiseziel.values()[i];
                System.out.println(i + ": " + moeglichesReiseziel.name());
            }
            try {
                int auswahl = new Scanner(System.in).nextInt();
                Reiseziel gewaehltesReiseziel = Reiseziel.values()[auswahl];
                System.out.println("Streckenpreis von " + gewaehltesReiseziel.streckenpreis + " für das Reiseziel " + gewaehltesReiseziel.name());
            } catch (ArrayIndexOutOfBoundsException | InputMismatchException e) {   Feheler wird angezeigt: cannot find symbol: InputMismatchExpection
                System.out.println("Ungültige Auswahl.");
            }
        }
    }
}
 

MoxxiManagarm

Top Contributor
Mein Code war nur ein Beispiel! Er war keinesfalls dazu geeignet ihn copy&paste einfach in deine Klasse reinzupacken. Nur für den Wiedererkennungswert habe ich deine Werte verwendet. Er sollte nur zeigen wie das Enum funktionieren kann. Bitte mache entsprechende Anpassungen. Du könntest z.B. auch den Namen eingeben lassen statt Nummer und den String per Reiseziel.valueOf(eingabeName) wieder dem Enum zuordnen. Dann müsstest du aber auch eine andere Exception abfangen. Hier mal diese andere Variante (wieder nur Beispiel!):
Java:
public class Reise {
    enum Reiseziel {
        München(2250),
        Hamburg(1550),
        Düsseldorf(750),
        Stuttgart(850),
        Berlin(1250);

        private int streckenpreis;

        private Reiseziel(int streckenpreis) {
            this.streckenpreis = streckenpreis;
        }
    }

    public static void main(String[] args) {
        System.out.println("Bitte wähle eine Strecke");

        for (Reiseziel moeglichesReiseziel : Reiseziel.values()) {
            System.out.println("*" + moeglichesReiseziel.name());
        }
        try {
            System.out.print("> ");
            String auswahl = new Scanner(System.in).next();
            Reiseziel gewaehltesReiseziel = Reiseziel.valueOf(auswahl);
            System.out.println("Streckenpreis von " + gewaehltesReiseziel.streckenpreis + " für das Reiseziel " + gewaehltesReiseziel.name());
        } catch (IllegalArgumentException e) {
            System.out.println("Ungültige Auswahl.");
        }
    }
}

Ausgabe:
Code:
Bitte wähle eine Strecke
*München
*Hamburg
*Düsseldorf
*Stuttgart
*Berlin
> Stuttgart
Streckenpreis von 850 für das Reiseziel Stuttgart
 
Zuletzt bearbeitet:

Garfild2015

Aktives Mitglied
Mein Code war nur ein Beispiel! Er war keinesfalls dazu geeignet ihn copy&paste einfach in deine Klasse reinzupacken. Er sollte nur zeigen wie das Enum funktionieren kann. Bitte mache entsprechende Anpassungen. Du könntest z.B. auch den Namen eingeben lassen statt Nummer und den String per Reiseziel.valueOf(eingabeName) wieder dem Enum zuordnen. Dann müsstest du aber auch eine andere Exception abfangen. Hier mal diese andere Variante (wieder nur Beispiel!):
Java:
public class Reise {
    enum Reiseziel {
        München(2250),
        Hamburg(1550),
        Düsseldorf(750),
        Stuttgart(850),
        Berlin(1250);

        private int streckenpreis;

        private Reiseziel(int streckenpreis) {
            this.streckenpreis = streckenpreis;
        }
    }

    public static void main(String[] args) {
        System.out.println("Bitte wähle eine Strecke");

        for (Reiseziel moeglichesReiseziel : Reiseziel.values()) {
            System.out.println("*" + moeglichesReiseziel.name());
        }
        try {
            System.out.print("> ");
            String auswahl = new Scanner(System.in).next();
            Reiseziel gewaehltesReiseziel = Reiseziel.valueOf(auswahl);
            System.out.println("Streckenpreis von " + gewaehltesReiseziel.streckenpreis + " für das Reiseziel " + gewaehltesReiseziel.name());
        } catch (IllegalArgumentException e) {
            System.out.println("Ungültige Auswahl.");
        }
    }
}

Ausgabe:
Code:
Bitte wähle eine Strecke
*München
*Hamburg
*Düsseldorf
*Stuttgart
*Berlin
> Stuttgart
Streckenpreis von 850 für das Reiseziel Stuttgart

Danke für ihre Mühe, aber so weit sind wir in Informatik noch nicht und ich glaube ich mache das lieber mit dem switch-case, dass habe ich nämlich verstanden.
 

MoxxiManagarm

Top Contributor
Ist immer schwierig einzuschätzen, was jemand schon kennt und was nicht. Switch-Case ist total in Ordnung, das Enum war mehr auf deine Frage mit dem Auflisten bezogen. Dann musst du das wohl parallel führen
 

MoxxiManagarm

Top Contributor
Ich denke ich würde es in der Methode lassen, aber sie abändern.
1. Methoden sind typischer Weise Aktionen. Benenne sie auch so. z.B. "addChildTickets" (man beachte außerdem den konventionellen lowerCamelCase)
2. Den Wert "kindertickets" (bzw. "erwachsenentickets") brauchst du nicht speichern, außer du möchtest diese Anzahl nochmal beim Drucken des Tickets verwenden
3. Du darfst preis natürlich nicht fest zuweisen, sondern musst diesen erhöhen. Das kannst du mit dem += Operator machen
Java:
zuZahlenderPreis += anzahlKinderTickets * streckenNormalPreis / 2;
// bzw.
zuZahlenderPreis += anzahlErwachsenenTickets * streckenNormalPreis;
 

Garfild2015

Aktives Mitglied
Ich denke ich würde es in der Methode lassen, aber sie abändern.
1. Methoden sind typischer Weise Aktionen. Benenne sie auch so. z.B. "addChildTickets" (man beachte außerdem den konventionellen lowerCamelCase)
2. Den Wert "kindertickets" (bzw. "erwachsenentickets") brauchst du nicht speichern, außer du möchtest diese Anzahl nochmal beim Drucken des Tickets verwenden
3. Du darfst preis natürlich nicht fest zuweisen, sondern musst diesen erhöhen. Das kannst du mit dem += Operator machen
Java:
zuZahlenderPreis += anzahlKinderTickets * streckenNormalPreis / 2;
// bzw.
zuZahlenderPreis += anzahlErwachsenenTickets * streckenNormalPreis;

Ich würde gerne die Option dabei schreiben, dass man jeder Zeit die Anzahl der Tickets abrufen kann.
Wie kann man das machen?
 

Garfild2015

Aktives Mitglied
Mache ich das dann mit return?

Wenn ich es mi return mache, kommte eine Fehlermeldung: incompertible types: unexpected return value

Code:
public void KindertickesHinzufuegen(int Kindertickets) {
        anzahlKindertickets= Kindertickets;   
        zuZahlenderPreis += anzahlKindertickets * streckenpreis / 2; 

    }

    public void KinderticketsAnzahlAbrufen(){
        return anzahlKindertickets; 
    }

    public void ErwachsenenticketsHinzufügen(int Erwachsenentickets){
        anzahlErwachsenentickets=Erwachsenentickets; 
        zuZahlenderPreis += anzahlErwachsenentickets * streckenpreis; 
    }
    
    public void ErwachsenenticketsAbrufen(){
     return anzahlErwachsenentickets;   
    }
 

Garfild2015

Aktives Mitglied
Wenn ich es mi return mache, kommte eine Fehlermeldung: incompertible types: unexpected return value

Code:
public void KindertickesHinzufuegen(int Kindertickets) {
        anzahlKindertickets= Kindertickets;  
        zuZahlenderPreis += anzahlKindertickets * streckenpreis / 2;

    }

    public void KinderticketsAnzahlAbrufen(){
        return anzahlKindertickets;
    }

    public void ErwachsenenticketsHinzufügen(int Erwachsenentickets){
        anzahlErwachsenentickets=Erwachsenentickets;
        zuZahlenderPreis += anzahlErwachsenentickets * streckenpreis;
    }
   
    public void ErwachsenenticketsAbrufen(){
     return anzahlErwachsenentickets;  
    }
hab den Fehler gefunden :)
 

Garfild2015

Aktives Mitglied
Dann kannst du die Zahl ruhig speichern. So lange du den gespeicherten Wert irgendwann rufen willst ist das ok. Sonst wäre es überflüsdig
Code:
    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");
        }

    }

Würden sie hier dran was ändern ?
 

Garfild2015

Aktives Mitglied
Nur ne Kleinigkeit. Die kannst die eine Zeile verkürzen zu

bisherGezahlt += betrag;
Ok,
Erstmal Danke für die ganze Hilfe.
Ich würde gerne eine Methode für die Gesamtsumme hinzufügen, aber ich weiß nicht genau wie :)
Ich habe den bisherigen Code nochmal komplett mitgepostet.
Code:
public class Ticketautomat{
    int streckenpreis;
    int anzahlKindertickets;
    int anzahlErwachsenentickets;
    int zuZahlenderPreis;
    int bisherGezahlt;
    String  linie;
    public void Streckenauswahl(String neueLinie)
    {
        switch (neueLinie) {
            case "München":
            streckenpreis=2250;
            break;

            case "Hamburg":
            streckenpreis=1550;
            break;

            case "Düsseldorf":
            streckenpreis=750;
            break;

            case "Stuttgart":
            streckenpreis=850;
            break;

            case "Berlin":
            streckenpreis=1250;
            break;

            default:
            System.out.println("Ziel nicht verfügbar. Bitte neues Ziel eingeben");  //  eine Fehlermeldung ausgeben!
            return; // return statt break um die Methode zu verlassen.
        }

        linie = neueLinie;
    }

    public void KindertickesHinzufuegen(int Kindertickets) {
        anzahlKindertickets= Kindertickets;   
        zuZahlenderPreis += anzahlKindertickets * streckenpreis / 2; 

    }

    public int KinderticketsAnzahlAbrufen(){
        return anzahlKindertickets; 
    }

    public void ErwachsenenticketsHinzufügen(int Erwachsenentickets){
        anzahlErwachsenentickets=Erwachsenentickets; 
        zuZahlenderPreis += anzahlErwachsenentickets * streckenpreis; 
    }

    public int ErwachsenenticketsAbrufen(){
        return anzahlErwachsenentickets;   
    }

    public void geldEinwerfen(int betrag)
    {
        if(betrag==10 || betrag ==20|| betrag==50|| betrag ==50|| betrag==100|| betrag==200||betrag==500||betrag==1000){
            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");
        }

    }

}
 

Garfild2015

Aktives Mitglied
Ja. x += y ist äquivalent zu x = x + y
Jetzt bräuchte ich ein aller letztes mal ihre Meinung zu der Methode Ticket druckern
Code:
public void ticketDrucken()
    {
        if(bisherGezahlt>=preis){

            System.out.println("######################################");
            System.out.println("#_______________Ticket_______________#");
            System.out.println("#Datum:07.03.2020 Uhrzeit: 13:00Uhr  #");
            System.out.println("Name:"+name);
            System.out.println("# Von:Gladbeck Nach:"+linie+ "                          #");

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

            gesamtsumme= gesamtsumme + bisherGezahlt;
            bisherGezahlt= bisherGezahlt-preis;

            geldAuszahlen();

        }

        else if (bisherGezahlt<preis)  {
            int fehlt;
            fehlt= preis-bisherGezahlt;
            System.out.println("Es fehlt noch"+ fehlt+ "Cent!");
            System.out.println();

        }

    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Fehlersuche Java Basics - Anfänger-Themen 12
A Fehlersuche Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Programm Fehlersuche Java Basics - Anfänger-Themen 16
T Hilfe bei der Fehlersuche Java Basics - Anfänger-Themen 23
D Fehlersuche Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
1 Fehlersuche Java Basics - Anfänger-Themen 4
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
L ReplaceALL - Fehlersuche Java Basics - Anfänger-Themen 11
A Java Fehlersuche Java Basics - Anfänger-Themen 2
N Hoffnungslose Fehlersuche Java Basics - Anfänger-Themen 11
I Anfängerfrage: Fehlersuche Java Basics - Anfänger-Themen 2
S Fehlersuche(NullPointerException) Java Basics - Anfänger-Themen 5
S Fehlersuche bzw beheben Java Basics - Anfänger-Themen 9
P Fehlersuche bzgl. Array-Keys Java Basics - Anfänger-Themen 6
N Fehlersuche Printwriter Java Basics - Anfänger-Themen 6
N Hilfe bei Fehlersuche Java Basics - Anfänger-Themen 2
B Fehlersuche bei LinkedList Java Basics - Anfänger-Themen 3
w0ddes Array out of Bounds - Fehlersuche Java Basics - Anfänger-Themen 2
? hilfe bei Fehlersuche Sortierung List Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
D Zeichen im String ändern -> Fehlersuche Java Basics - Anfänger-Themen 7
S Filereader funktioniert nicht! Fehlersuche Java Basics - Anfänger-Themen 9
S Fehlersuche Java Basics - Anfänger-Themen 6
G Fehlersuche bei einer Rechenoperation Java Basics - Anfänger-Themen 2
G Hilfe bei fehlersuche Java Basics - Anfänger-Themen 3
N Fehlersuche. Tasks Java Basics - Anfänger-Themen 14
D Fehlersuche actionPerformed Java Basics - Anfänger-Themen 6
D Fehlersuche: Jar erstellen Java Basics - Anfänger-Themen 6
B Fehlersuche Java Basics - Anfänger-Themen 4
F Fehlersuche erfolglos Java Basics - Anfänger-Themen 3
F fehlersuche. Java Basics - Anfänger-Themen 13
J Fehlersuche - illegal start of expression Java Basics - Anfänger-Themen 3
U Kann mir jemand helfen? Java Basics - Anfänger-Themen 2
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
C Kann mir jemand helfen was mit diesen Fehlern gemeint ist ? Java Basics - Anfänger-Themen 12
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
HeiTim Kann mir Jemand helfen ? Java Basics - Anfänger-Themen 11
H Versteht jemand diesen Codewars Error? Java Basics - Anfänger-Themen 8
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
marcooooo Kann mir jemand das Beispiel kurz erklären so ungefähr:/ Java Basics - Anfänger-Themen 7
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
A Kann mir Jemand erklären wie ich das iteriere? Java Basics - Anfänger-Themen 4
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
T Kann mir jemand sagen, was bei folgender for-Schleife passiert? Java Basics - Anfänger-Themen 1
F Versteht das jemand? -Java Java Basics - Anfänger-Themen 6
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
K Könnte mir jemand erläutern, was der autor damit meint? Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
H Java Hamster - kann mir jemand weiterhelfen? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
R weiß jemand warum Java diesen Fehler ausspuckt? "Variable might not hav been initialized" Java Basics - Anfänger-Themen 4
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
I kann mir jemand weiterhelfen, wo liegen die Fehler? Java Basics - Anfänger-Themen 3
E Kann mir jemand sagen was hier falsch ist? Java Basics - Anfänger-Themen 6
gonzoradio Hat jemand Erfahrung mit javavideokurs.de Java Basics - Anfänger-Themen 5
D Kann mir vielleicht jemand die reflexive Assoziation erklären? Java Basics - Anfänger-Themen 2
C Hat jemand Ahnung zum GCJ(Gnu Compiler for Java) Java Basics - Anfänger-Themen 7
S Kann mir jemand kurz die Vorteile des Iterators erklaeren..? Java Basics - Anfänger-Themen 8
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
S unschöne schleifen.jemand ne bessere idee Java Basics - Anfänger-Themen 4
K Kennt jemand ein gutes Tutorial für Wertübergabe? Java Basics - Anfänger-Themen 4
G Kann mir jemand das erklären? Java Basics - Anfänger-Themen 11
S Hat jemand eine Idee warum die JLabels nicht mehr farbig Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
G Nutzt Jemand JCalendar? Java Basics - Anfänger-Themen 3
C Kann jemand mir helfen? Java Basics - Anfänger-Themen 15
N Kann mir bitte jemand helfen? Java Basics - Anfänger-Themen 6
M Kann mir jemand erklären, wie "static" funktionier Java Basics - Anfänger-Themen 2
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
J Guten tag, Ich hoffe ihr habt einen schönen Sonntag und könnt mir helfen Java Basics - Anfänger-Themen 2
A GUI- Allgemeines Problem (Bitte helfen) Java Basics - Anfänger-Themen 15
M Wer kann mir helfen ? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben