Java programmieren?

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von Visu, 17.10.2009.

  1. Visu

    Visu Erfahrener Benutzer

    Dabei seit:
    04.03.2007
    Beiträge:
    173
    Zustimmungen:
    0
    Hi,

    ich habe wegen studium jetzt angefangen mit Java zu programmieren.

    da müssen wir jetzt bis spätestens montag so ein übungsblatt mit 4 aufgaben bewältigen. ich tüftle gerade an aufgabe 3 und weiß nicht weiter, dazu kommt noch das ich vorher noch nie etwas mit java gemacht habe.

    Bei der 3. aufgabe: Man soll das Programm Geldautomat schreiben und der soll ausgeben:

    Betrag: 499,99 (den schreibt man über die kommandozeile)
    Hundert Euro: 4
    Zwanzig Euro: 4
    Zwei Euro: 9
    Ein Euro: 1
    Zwanzig Cent: 4
    Zehn Cent: 1
    Zwei Cent: 4
    Ein Cent: 1



    ich habe als quelltext:



    public class Geldautomat {
    public static void main (String[]args){
    double betrag = Double.parseDouble(args[0]);
    //hiermit kann der Betrag in die Kommandozeile eingegeben werden
    int intZahl = (int) (doubleZahl + 0.5);
    //Rundungsverfahren
    int Zahl1 = betrag;
    int Zahl2 =(Zahl1/100);
    int Zahl3 =(betrag-(Zahl1/100))/20);
    int Zahl4 =(((betrag-(Zahl1/100))/20)/2);
    int Zahl5 =((((betrag-(Zahl1/100))/20)/2)/1);
    double Zahl6 =(((((betrag-(Zahl1/100))/20)/2)/1)/0.20);
    double Zahl7 =((((((betrag-(Zahl1/100))/20)/2)/1)/0.20)/0.10);
    double Zahl8 =(((((((betrag-(Zahl1/100))/20)/2)/1)/0.20)/0.10)/0.02);
    double Zahl9 =((((((((betrag-(Zahl1/100))/20)/2)/1)/0.20)/0.10)/0.02)/0.01);
    System.out.println("Betrag:"Zahl1);
    System.out.println("Hundert Euro:"Zahl2);
    System.out.println("Zwanzig Euro:"Zahl3);
    System.out.println("Zwei Euro:"Zahl4);
    System.out.println("Ein Euro:"Zahl5);
    System.out.println("Zwanzig Cent:"Zahl6);
    System.out.println("Zehn Cent:"Zahl7);
    System.out.println("Zwei Cent:"Zahl8);
    System.out.println("Ein Cent:"Zahl9);
    }
    }


    aber...ich glaube dass das nicht sein kann....sieht einfach zu komisch aus XD"""

    und der compiler jammert wegen den klammern bei system.out.println...wobei ich das jedoch nicht nachvollziehen kann, weil da ja immer eine klammer steht...



    Ich hoffe auf Antworten! Danke im Voraus!
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. Sviper

    Sviper Guest

    Den Fehler mit dem vergessenen Multiplikationsoperator hast du ja bereits gelöst, aber ich verstehe nicht, was du da mit der Obergrenze machst. Momentan berechnet dein Programm nur das i für n=100. Sonst nichts. Das soll man doch bestimmt irgendwie eingeben können, oder?
     
  4. Visu

    Visu Erfahrener Benutzer

    Dabei seit:
    04.03.2007
    Beiträge:
    173
    Zustimmungen:
    0
    @sviper



    habe das problem schon gelöst ^^ ja man sollte die obergrenze per kommandozeile angeben, da bin ich vorhin nicht dahinter gekommen. *doof* aber dafür ist die 3.aufgabe echt die katastrophe XD
     
  5. Sviper

    Sviper Guest

    Hm, hatte nicht den Eindruck, dass die Obergrenze per Kommandozeile eingelesen wurde. Naja, wenn du's so gemacht hast wie bei Aufgabe 3, dann ist's richtig.
    Also zu Nummer drei: Der Fehler liegt darin, dass z.B "Zwanzig Cent:"Zahl6 etwas total undefiniertes ist. Du brauchst wieder einen Operator. "Zwanzig Cent:"+Zahl6 liefert einen String, den du dann an System.out.println übergeben kannst.
    Im Übrigen: Warum machst du dir die Mühe, immer alles von Zahl1 zu berechenen, du kannst einfach alles von Zahl1 minus der vorhergehenden Zahl berechnen, wäre einfacher. Ansonsten gib den Variablen doch mal aussagekräftige Namen, z.B. int hunderter oder int zwanziger. Und benutz die CODE-Tags im Forum, dann wird's noch leserlicher.
     
  6. Visu

    Visu Erfahrener Benutzer

    Dabei seit:
    04.03.2007
    Beiträge:
    173
    Zustimmungen:
    0
    also....ich habe es jetzt umgeändert, doch dem compiler gefällt nun den kommas ";" bei den ganzen int´s nicht.



    das mit dem Zahl1 minus vorhergehende Zahl geht nicht. weil ja nicht immer ein betrag rauskommt, sondern nur eine anzahl. also bei 499,99 kommt bei "hunderter" 4 raus. da 100 4mal in die 499,99 passt.



    der veränderte quelltext:



    Code:
    public class Geldautomat { 
    public static void main (String[]args){ 
    double betrag = Double.parseDouble(args[0]); 
    //hiermit kann der Betrag in die Kommandozeile eingegeben werden 
    int intZahl = (int) (doubleZahl + 0.5); 
    //Rundungsverfahren 
    int Geldbetrag = betrag; 
    int Hunderter =(Geldbetrag/100); 
    int Zwanziger =((Geldbetrag/100)/20); 
    int Zwei_Euro =((((Geldbetrag/100)/20)/2); 
    int Ein_Euro =(((((Geldbetrag/100)/20)/2)/1); 
    double Zwanzig_Cent =((((((Geldbetrag/100)/20)/2)/1)/0.20); 
    double Zehn_Cent =(((((((Geldbetrag/100)/20)/2)/1)/0.20)/0.10); 
    double Zwei_Cent =((((((((Geldbetrag/100)/20)/2)/1)/0.20)/0.10)/0.02); 
    double Ein_Cent =(((((((((Geldbetrag/100)/20)/2)/1)/0.20)/0.10)/0.02)/0.01); 
    System.out.println("Betrag:"+Geldbetrag); 
    System.out.println("Hundert Euro:"+Hunderter); 
    System.out.println("Zwanzig Euro:"+Zwanziger); 
    System.out.println("Zwei Euro:"+Zwei_Euro); 
    System.out.println("Ein Euro:"+Ein_Euro); 
    System.out.println("Zwanzig Cent:"+Zwanzig_Cent); 
    System.out.println("Zehn Cent:"+Zehn_Cent); 
    System.out.println("Zwei Cent:"+Zwei_Cent); 
    System.out.println("Ein Cent:"+Ein_Cent); 
    } 
    }


    *sich gegen stirn klatsch* jetzt ist die ganze rechnung falsch.....also nochmal:



    geldbetrag: 499,99

    Hundert Euro: 4 (=499,99/100)

    Zwanzig Euro: 4 (=99,99/20)

    Zwei Euro: 9 (=19,99/2)

    aber....wie kommt man auf die 99,99 im quelltext...da kann man ja nur 499,99-400,00 machen was wiederum 499,99-(4*100) ist....also ähm....Geldbetrag-(Hunderter*100) ist für die nächste zeile komplett dann:

    int Zwanziger = ((Geldbetrag-(Hunderter*100))/20) und für die übernächste zeile wäre das dann ((Geldbetrag-(Hunderter*100))-(Zwanziger*20)/2)) und das wird immer länger und länger....kürzer kann man das ja garnicht machen. :huh:
     
  7. #6 xandros, 18.10.2009
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.885
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Ohne irgendwelche Lösungen zu präsentieren.... Für solche Aufgaben eignet sich der Modulo-Operator besser als ellenlange Berechnungen.
     
  8. Sviper

    Sviper Guest

    Die Compilerfehlermeldungen mit dem ";" sind in Wirklichkeit Klammerprobleme. Z.B. seh ich in Zeile 12 6 öffnende aber nur 5 schließende Klammern (Ich hoffe das ist auch so und liegt nicht an der leeren Flasche Rotwein auf dem Tisch ;-) ).
    Du solltest auf jeden Fall einen Restbetrag mit berechnen, dass geht ganz gut mit dem von xandros erwähnten Modulo-Operator, alternativ kannst du die letzte Zahl mulitpliziert mit der Wertigkeit abziehen (z.B. 100*Hunderter). Aber der Modulo-Operator ist deutlich eleganter.
    Und dann mal noch ne Frage: Warum benutzt du für die Cent-Werte einen double-Wert, das sind doch auch nur Anzahlen?
     
  9. Visu

    Visu Erfahrener Benutzer

    Dabei seit:
    04.03.2007
    Beiträge:
    173
    Zustimmungen:
    0
    sodala!



    ich habe jetzt die berechnungen umgeschrieben und jetzt müssten sie richtig sein...wenn man modulus addieren darf XD aber ich habs mal nachgerechnet, müsste also gehen.



    aber jetzt hat der compiler doch wieder ein problem...und zwar mit dem Rundungsverfahren..da gefällt ihm iwas an das double und der klammer nicht...



    @sviper



    ich habe für die cent-werte double benutzt weil int soweit ich es verstanden habe, KEINE kommazahlen akzeptiert...und bei der berechnung sind jedoch kommazahlen vorhanden. ich habe jetzt zur sicherheit einfach bei allen double genommen XD wobei.....dann kommt ja bei jedem double und modulus kommasstellen raus....vielleicht sollte ich doch wieder bis zu den cent-werten int nehmen....


    quelltext:



    Code:
    public class Geldautomat { 
    public static void main (String[]args){ 
    double betrag = Double.parseDouble(args[0]); 
    //hiermit kann der Betrag in die Kommandozeile eingegeben werden 
    int intZahl = (int) (doubleZahl + 0.5); 
    //Rundungsverfahren 
    double Geldbetrag = betrag; 
    double Hunderter =(int)(Geldbetrag-Geldbetrag0)/100; 
    double Zwanziger =(int)(Geldbetrag0)/20; 
    double Zwei_Euro =(int)(Geldbetrag0)/2; 
    double Ein_Euro =(int)(Geldbetrag2)/1; 
    double Zwanzig_Cent =(int)(Geldbetrag3)/0.20; 
    double Zehn_Cent =(int)(Geldbetrag3.20)/0.10; 
    double Zwei_Cent =(int)(Geldbetrag3.30)/0.02; 
    double Ein_Cent =(int)(Geldbetrag3.32)/0.01; 
    System.out.println("Betrag:"+Geldbetrag); 
    System.out.println("Hundert Euro:"+Hunderter); 
    System.out.println("Zwanzig Euro:"+Zwanziger); 
    System.out.println("Zwei Euro:"+Zwei_Euro); 
    System.out.println("Ein Euro:"+Ein_Euro); 
    System.out.println("Zwanzig Cent:"+Zwanzig_Cent); 
    System.out.println("Zehn Cent:"+Zehn_Cent); 
    System.out.println("Zwei Cent:"+Zwei_Cent); 
    System.out.println("Ein Cent:"+Ein_Cent); 
    } 
    }


    ich habs nochmal umgeändert, weil jemand meinte, dass man modulus garnicht mit kommazahlen machen soll.



    doch jetzt gibts probleme mit den schrägstrichen (division) bei den rechnungen, die als fehler angezeigt werden.



    neuer quelltext:



    Code:
    public class Geldautomat {
    public static void main (String[]args){
    double betrag = Double.parseDouble(args[0]);
    //hiermit kann der Betrag in die Kommandozeile eingegeben werden
    double Geldbetrag = betrag;
    int Hunderter =((Geldbetrag-Geldbetrag%100)/100);
    //Rechnung für 499,99: (499,99-99,99/100)=4
    int Zwanziger =((Geldbetrag%100)/20);
    int Zwei_Euro =((Geldbetrag%120)/2);
    //der Modulus ergibt sich hier aus 100+20
    int Ein_Euro =((Geldbetrag%122)/1);
    int Zwanzig_Cent =((Geldbetrag%12300)/20);
    //Euro wird für eine einfachere Berechnung auf Cent umgewandelt
    int Zehn_Cent =((Geldbetrag%12320)/10);
    int Zwei_Cent =((Geldbetrag%12330)/2);
    int Ein_Cent =((Geldbetrag%12332)/1);
    System.out.println("Betrag:"+Geldbetrag);
    System.out.println("Hundert Euro:"+Hunderter);
    System.out.println("Zwanzig Euro:"+Zwanziger);
    System.out.println("Zwei Euro:"+Zwei_Euro);
    System.out.println("Ein Euro:"+Ein_Euro);
    System.out.println("Zwanzig Cent:"+Zwanzig_Cent);
    System.out.println("Zehn Cent:"+Zehn_Cent);
    System.out.println("Zwei Cent:"+Zwei_Cent);
    System.out.println("Ein Cent:"+Ein_Cent);
    }
    }
     
  10. AdMan

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  11. Sviper

    Sviper Guest

    Die Hunderter, Zwanziger etc. sind deswegen int, weil du ja eine Anzahl von Geldscheinen/-stücken suchst. double macht da keinen Sinn. Die Berechnung arbeitet zwar mit Kommazahlen, allerdings willst du als Ergebnis eine Ganzzahl haben. Deswegen int. Der Compiler weiß das allerdings nicht und warnt dich, dass das Ergebnis der Berechnung in ein int konvertiert wird und dabei die Nachkommastellen verloren gehen. Um die Warnung zu verhindern, musst du das Ergebnis explizit casten (in int). Damit sagst du dem Compiler: Ja, ich weiß was ich tue und will ein int statt einem double als Ergebnis haben, auch wenn dabei Informationen verloren gehen.
    Allerdings verwendest du bei deinen Modulooperationen seltsame Werte, z.B. 12332. Das wird so nicht das gewünschte Ergebnis liefern. Nimm doch einfach einen Restbetrag mit.
    Könnte dann so aussehen:
    Code:
    double restbetrag = betrag;
    int Hunderter = (int) (restbetrag / 100)
    restbetrag = restbetrag % 100;
    int Zwanziger = (int) (restbetrag / 20)
    restbetrag = restbetrag % 20;
    
    usw.
     
  12. Visu

    Visu Erfahrener Benutzer

    Dabei seit:
    04.03.2007
    Beiträge:
    173
    Zustimmungen:
    0
    habs geschafft!!!! :party: :D :D :D

    Hier:

    Code:
    public class Geldautomat {
    public static void main (String[]args){
    double betrag = Double.parseDouble(args[0]);
    //hiermit kann der Betrag in die Kommandozeile eingegeben werden
    int einheiten[] = new int[]{100*100, 20*100, 2*100, 1*100, 20, 10, 2, 1};
    //Umwandlung von Euro auf Cent, damit man nur int benutzen kann (einfacher)
    String einheitenNamen[] = new String[]{"Betrag:", "Hundert Euro:", "Zwanzig Euro:", "Zwei Euro:", "Ein Euro:", "Zwanzig Cent:", "Zehn Cent", "Zwei Cent", "Ein Cent"};
    //Euro wird für eine einfachere Berechnung auf Cent umgewandelt und aufgerundet
    double Restbetrag = (int)Math.round(betrag*100);
    int Hunderter =(int)(Restbetrag/10000);
    //Rechnung bei 499,99: 499,99/(100*100) = 4
    Restbetrag = (Restbetrag%10000);
    //Rechnung bei 499,99: 499,99%(100*100) = 99,99
    int Zwanziger =(int)(Restbetrag/2000);
    Restbetrag = (Restbetrag%2000);
    int Zwei_Euro =(int)(Restbetrag/200);
    Restbetrag = (Restbetrag%200);
    int Ein_Euro =(int)(Restbetrag/100);
    Restbetrag = (Restbetrag%100);
    int Zwanzig_Cent =(int)(Restbetrag/20);
    Restbetrag = (Restbetrag%20);
    int Zehn_Cent =(int)(Restbetrag/10);
    Restbetrag = (Restbetrag%10);
    int Zwei_Cent =(int)(Restbetrag/2);
    Restbetrag = (Restbetrag%2);
    int Ein_Cent =(int)(Restbetrag/1);
    Restbetrag = Double.parseDouble(args[0]);
    System.out.println("Betrag:"+Restbetrag);
    System.out.println("Hundert Euro:"+Hunderter);
    System.out.println("Zwanzig Euro:"+Zwanziger);
    System.out.println("Zwei Euro:"+Zwei_Euro);
    System.out.println("Ein Euro:"+Ein_Euro);
    System.out.println("Zwanzig Cent:"+Zwanzig_Cent);
    System.out.println("Zehn Cent:"+Zehn_Cent);
    System.out.println("Zwei Cent:"+Zwei_Cent);
    System.out.println("Ein Cent:"+Ein_Cent);
    }
    }

    vielen dank für die hilfestellungen!! :thumbsup:
     
Thema: Java programmieren?
Besucher kamen mit folgenden Suchen
  1. java geldautomat

    ,
  2. java geldautomat programmieren

    ,
  3. geldautomat java programmieren

    ,
  4. geldautomat java,
  5. geldautomat programmieren java,
  6. bankautomaten java programmieren,
  7. java bankautomat,
  8. java geldautomat code,
  9. betrag cent java,
  10. java programm geldautomat int ausgeben scanner,
  11. java programm geldautomat int scanner,
  12. java programm geldautomat,
  13. java programmcode bankautomat,
  14. java bankautomaten programmieren,
  15. java restbetrag,
  16. bankautomat programmieren java,
  17. java hilfe geldautomat,
  18. geldautomat java lösungen,
  19. geldautomat in Java programmieren,
  20. geldautomat mit java schreiben,
  21. geldautomaten in java programmiren,
  22. mit java programmieren betrag,
  23. java komma stellen,
  24. zahl in euro und cent ausgeben java,
  25. restbetrag java
Die Seite wird geladen...

Java programmieren? - Ähnliche Themen

  1. Programmierer TeamSpeak

    Programmierer TeamSpeak: Hey zusammen, ein Freund und ich sind auf der Suche nach Gleichgesinnten, die dieselben Interessen im Bereich Programmieren teilen. Als Ziel...
  2. Tastaturtester mit Java

    Tastaturtester mit Java: Hallo Leute, ich wollte gerade mal auf die Schnelle ein Tastaturtester mit Java bauen. Grund ist ein neuer Encoder, der nächste Woche...
  3. Java 7

    Java 7: Hallo :) Ich kann mir kein Java Installieren weil er mir in den Programmen schon "Java 7 Update 9" anzeigt. Deinstallieren funktioniert auch...
  4. Java-Programmierung - Fehler bei Ausführung

    Java-Programmierung - Fehler bei Ausführung: Ich habe kürzlich begonnen, mich mit der Programmierung in Java zu beschäftigen. Auf meinem PC habe ich Windows 8 laufen und verwende dias Java...
  5. Hauptmenü für Spiel in Java

    Hauptmenü für Spiel in Java: Hallo Leute, ich habe ein kleines Problem. Ich sollte für die Uni ein Spiel in Java schreiben und habe mich dabei für das Applet entschieden,...