#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 + Multi-Zitat Zitieren
#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 - - - + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#4 25. Januar 2009 AW: Problem brauche Hilfe jo da kann ich auch die einzelnen werte nicht zusammen addieren + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren