[Java] Tastatur Klasse

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Laura, 25. Januar 2009 .

Schlagworte:
  1. 25. Januar 2009
    Tastatur Klasse

    Hey
    hab hier ein Programm aber leider bekomme ich das nicht hin, dass der Werte addiert wenn man z.B eine Schleife 5 mal durchlaufen lässt und dabei der wert sich ändert momentan nimmt er nämlich immer nur den letzten wert --> das rote

    und hier noch meine Tastatur Klasse:
    http://rapidshare.com/files/161759320/Tastatur.rar

    Code:
    package uebungNr07_Spesenabrechnung_Mit_Methoden_****;
    
    public class Spesenabrechnung {
    
     /**
     * @param args
     */
     public static void main(String[] args) {
     // TODO Auto-generated method stub
    
     double aK, eK, gfpt, vP, ueK, tpeut;
    
     aK=anfangskilometerstandEingabe();
     eK=endkilometerstandEingabe(aK);
     gfpt=gesamtfahrzeitProTag();
     System.out.println(gfpt);
     vP=verguetungsPauschale(aK,eK);
     ueK=uebernachtungsKosten();
     tpeut=tagespauschaleEssenUndTrinken();
     System.out.println(tpeut);
    
    
     }// end main ================================================================================
    
     /**
     * Einlesen des Anfangskilometerstands
     * @param Wert1
     * @param Wert2
     * @return anfangskilometerstand
     **/
     private static double anfangskilometerstandEingabe()
     {// anfang Methode anfangskilometerstandEingabe
     double anfangskilometerstand;
    
     System.out.println("Bitte geben sie den Anfangskilometerstand > 0 ein: ");
     anfangskilometerstand=Tastatur.leseKommazahl();
     System.out.println("Sie haben " + anfangskilometerstand + "Km eingegeben");
     while(anfangskilometerstand < 0)
     {// anfang while anfangskilometerstand < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie den Anfangskilometerstand > 0 ein: ");
     anfangskilometerstand=Tastatur.leseKommazahl();
     System.out.println("Sie haben " + anfangskilometerstand + "Km eingegeben");
     }// end while anfangskilometerstand < 0
     return anfangskilometerstand;
     }// end Methode anfangskilometerstandEingabe
    // ==================================================================================================
     /**
     * Einlesen des Endkilometerstands
     * @param Wert1
     * @param Wert2
     * @return endkilometerstand
     **/
     private static double endkilometerstandEingabe(double wert1)
     {// anfang Methode endkilometerstandEingabe
     double endkilometerstand;
    
     System.out.println("Bitte geben sie den Endkilometerstand > " + wert1 + " ein: ");
     endkilometerstand=Tastatur.leseKommazahl();
     System.out.println("Sie haben " + endkilometerstand + "Km eingegeben");
     while(endkilometerstand < wert1)
     {// anfang while endkilometerstand < wert1
     System.out.println("Falsche Eingabe!! - Bitte geben sie den Endkilometerstand > " + wert1 + " ein: ");
     endkilometerstand=Tastatur.leseKommazahl();
     System.out.println("Sie haben " + endkilometerstand + "Km eingegeben");
     }// end while endkilometerstand < wert1
     return endkilometerstand;
     }// end Methode endkilometerstandEingabe
    // ==================================================================================================
     /**
     * Einlesen der gesamtfahrzeitProTag
     * @param Wert1
     * @param Wert2
     * @return gesamtfahrzeitProTag
     **/
     private static double gesamtfahrzeitProTag()
     {// anfang Methode gesamtfahrzeitProTag
     double gesamtfahrzeitProTag=0;
     double tage=0;
     double i=1;
    
     System.out.println("Wie viele Tage waren sie Unterwegs?");
     tage=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + tage + " Tage unterwegs");
     while(i<=tage)
     {// anfang while i<=tage
     System.out.println("Bitte geben sie die GesamtFahrzeit pro Tag >= 0 ein: ");
     gesamtfahrzeitProTag=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + gesamtfahrzeitProTag + "h unterwegs");
     while(gesamtfahrzeitProTag < 0)
     {// anfang while gesamtfahrzeitProTag < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie die GesamtFahrzeit pro Tag >= 0 ein: ");
     gesamtfahrzeitProTag=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + gesamtfahrzeitProTag + "h unterwegs");
     }// end while gesamtfahrzeitProTag < 0
     i++;
     }// end while i<=tage
     return gesamtfahrzeitProTag;
     }// end Methode gesamtfahrzeitProTag
    // ==================================================================================================
     /**
     * Berechnung der verguetungsPauschale pro Kilometer
     * @param aK
     * @param eK
     * @return verguetungsPauschale
     **/
     private static double verguetungsPauschale(double aK, double eK)
     {// anfang Methode verguetungsPauschale
     double verguetungsPauschale;
    
     verguetungsPauschale=(eK-aK)*0.3;
     System.out.println("Ihre Vergütung beträgt: " + verguetungsPauschale + "€");
    
     return verguetungsPauschale;
     }// end Methode verguetungsPauschale
    // ==================================================================================================
     /**
     * Einlesen der uebernachtungsKosten
     * @param Wert1
     * @param Wert2
     * @return uebernachtungsKosten
     **/
     private static double uebernachtungsKosten()
     {// anfang Methode uebernachtungsKosten
     double uebernachtungsKosten;
    
     System.out.println("Bitte geben sie die Übernachtsungs Kosten ein: ");
     uebernachtungsKosten=Tastatur.leseKommazahl();
     System.out.println("Ihre Übernachtungskosten betragen " + uebernachtungsKosten + "€");
    
     return uebernachtungsKosten;
     }// end Methode uebernachtungsKosten
    // ==================================================================================================[COLOR="Red"]
     /**
     * Ermitteln der Tagespauschale für Essen und Trinken
     * @param Wert1
     * @param Wert2
     * @return verguetung
     **/
     private static double tagespauschaleEssenUndTrinken()
     {// anfang Methode uebernachtungsKosten
     double stunden;
     int verguetung=0;
     double tage=0;
     double i=1;
    
     System.out.println("Bitte geben sie die verbrachten Tage im Hotel ein: ");
     tage=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + tage + " Tag(e) im Hotel");
    
     while(i<=tage)
     {// anfang while i<=tage
    
     System.out.println("Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     while(stunden <= 0)
     {// anfang while stunden < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     }// end while stunden < 0
     if(stunden < 4)
     {// anfang if stunden < 4
     verguetung=10;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 4
     else
     {// anfang else
     if(stunden <= 6)
     {// anfang if stunden < 6
     verguetung=20;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 6
     else
     {// anfang else
    
     if(stunden > 6)
     {// anfang if stunden > 6
     verguetung=30;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden > 6
     }//end else
     }// end else
     i++;
     }// end while i<=tage
     return verguetung;
     }// end Methode uebernachtungsKosten[/COLOR]
    
    }// end class
    
    //ausagbe von eingebenen werten zur kontrolle
     
  2. 25. Januar 2009
    AW: Problem brauche Hilfe

    Was soll denn immer erhöht werden? Die stunden oder die verguetung?

    Da du immer eine Zuweisung(!) machst - beim Einlesen der Daten über die Tastatur, wird natürlich der alte Wert überschrieben.
    Falls du möchtest, dass die Eingabe auf den bisherigen Wert addiert wird, musst du eine "+= Zuweisung" machen.

    Beispiel:
    Code:
    // Deine Variante:
    wert = Tastatur.LeseIrgendwasEin();
    // Hier der Vorschlag:
    wert = wert + Tastatur.LeseIrgendwasEin();
    // oder
    wert += Tastatur.LeseIrgendwasEin();
    
    Den Code aus dieser Funktion hab ich ein wenig überarbeitet:
    Es ist sehr unübersichtlich und problematisch, wenn du verschachtelte IF-Anweisungen hast. Noch dazu, wenn dies gar nicht nötig wäre. Des weiteren durchläufst du deine while-Schleife ja genau "tage"-Mal. Somit würde sich eine FOR-Schleife viel besser anbieten.

    Code:
    /**
     * Ermitteln der Tagespauschale für Essen und Trinken
     * @param Wert1
     * @param Wert2
     * @return verguetung
     **/
     private static double tagespauschaleEssenUndTrinken()
     {// anfang Methode uebernachtungsKosten
     double stunden;
     int verguetung=0;
     double tage=0;
     double i=1;
    
     System.out.println("Bitte geben sie die verbrachten Tage im Hotel ein: ");
     tage = Tastatur.leseKommazahl();
     System.out.println("Sie waren " + tage + " Tag(e) im Hotel");
    
     for(i = 0; i < tage; i++)
     {// anfang while i<=tage
     
     System.out.println("Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     while(stunden <= 0)
     {// anfang while stunden < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     }// end while stunden < 0
     
     
     // Möglichkeiten: 1-4, 5-6, >6
     if(stunden < 4)
     {// anfang if stunden < 4
     verguetung=10;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 4
     else if(stunden <= 6)
     {// anfang if stunden <= 6
     verguetung=20;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 6
     else if(stunden > 6)
     {// anfang if stunden > 6
     verguetung=30;
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden > 6
     
     }// end while i<=tage
     return verguetung;
     }// end Methode uebernachtungsKosten
    
    - - -
     
  3. 25. Januar 2009
    AW: Problem brauche Hilfe

    Also erstmal zu dem Teil den du rot makiert hast. So sollte er die vergütung addieren:

    Geänderte Sachen in ROT damit du das hast was du möchtest

    Code:
     private static double tagespauschaleEssenUndTrinken()
     {// anfang Methode uebernachtungsKosten
     double stunden;
     int verguetung=0;
     double tage=0;
     double i=1;
    
     System.out.println("Bitte geben sie die verbrachten Tage im Hotel ein: ");
     tage=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + tage + " Tag(e) im Hotel");
    
     while(i<=tage)
     {// anfang while i<=tage
    
     System.out.println("Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     while(stunden <= 0)
     {// anfang while stunden < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");
     stunden=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + stunden + "h in ihrem Hotel");
     }// end while stunden < 0
     if(stunden < 4)
     {// anfang if stunden < 4
     [COLOR="Red"]verguetung = verguetung + 10;[/COLOR]
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 4
     else
     {// anfang else
     if(stunden <= 6)
     {// anfang if stunden < 6
     [COLOR="Red"]verguetung = verguetung + 20;[/COLOR]
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden < 6
     else
     {// anfang else
    
     if(stunden > 6)
     {// anfang if stunden > 6
     [COLOR="Red"]verguetung = verguetung + 30;[/COLOR]
     System.out.println("Ihre Verguetung beträgt " + verguetung + "€");
     }//end if stunden > 6
     }//end else
     }// end else
     i++;
     }// end while i<=tage
     return verguetung;
     }// end Methode uebernachtungsKosten
    das würde ich auch noch verändern

    System.out.println("Bitte geben sie ihre im Hotel verbrachten Stunden ein: ");

    Da müssen noch die Tage rein. Irgentwie sowas wie "Wie viel Stunden waren sie am (1,2,3,... etc) Tag im Hotel.

    Was soll die Funktion gfpt=gesamtfahrzeitProTag(); genau machen ? Denn ich verstehe nicht was das ziel dieser Funktion ist ? Ich glaub das da auch noch nen kleiner denkfehler drin ist.


    LG Farin
     
  4. 25. Januar 2009
    AW: Problem brauche Hilfe


    jo da kann ich auch die einzelnen werte nicht zusammen addieren
     
  5. 25. Januar 2009
    AW: Tastatur Klasse

    Da ist es dann das selbe wie oben du musst die werte nochmal addieren. Sprich

    gesamtfahrzeitProTag = gesamtfahrzeitProTag + Tastatur.leseKommazahl();

    Code:
     private static double gesamtfahrzeitProTag()
     {// anfang Methode gesamtfahrzeitProTag
     double gesamtfahrzeitProTag=0;
     double tage=0;
     double i=1;
    
     System.out.println("Wie viele Tage waren sie Unterwegs?");
     tage=Tastatur.leseKommazahl();
     System.out.println("Sie waren " + tage + " Tage unterwegs");
     while(i<=tage)
     {// anfang while i<=tage
     System.out.println("Bitte geben sie die GesamtFahrzeit pro Tag >= 0 ein: ");
     [COLOR="Red"] gesamtfahrzeitProTag = gesamtfahrzeitProTag + Tastatur.leseKommazahl();[/COLOR]
     System.out.println("Sie waren " + gesamtfahrzeitProTag + "h unterwegs");
     while(gesamtfahrzeitProTag < 0)
     {// anfang while gesamtfahrzeitProTag < 0
     System.out.println("Falsche Eingabe!! - Bitte geben sie die GesamtFahrzeit pro Tag >= 0 ein: ");
     [COLOR="Red"]gesamtfahrzeitProTag = gesamtfahrzeitProTag + Tastatur.leseKommazahl();[/COLOR]
     System.out.println("Sie waren " + gesamtfahrzeitProTag + "h unterwegs");
     }// end while gesamtfahrzeitProTag < 0
     i++;
     }// end while i<=tage
     return gesamtfahrzeitProTag;
     }// end Methode gesamtfahrzeitProTag
    
    Geht sonst noch etwas nicht wie es gehen sollte ? Oder ist nun alles so wie sein sollte

    LG Farin
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.