datentypen konvertierung u modulorechnung

Status
Nicht offen für weitere Antworten.

richard84

Mitglied
hallo,
versuche mir grad selbst java beizubringen und ne aufgabe in meinen unterlagen gefunden, wo ich nen geldautomat programmieren soll. soll relativ einfach sein steht da...nur ich hänge.
es ist so, das ich geld abheben darf (keine cent), da soll nicht erlaubt sein. bei dem neuen kontostand soll dann jedoch das komma vorkommen bsp. hast 20 euro aktuell drauf, holst 10 euro ab, ergebniss = 10,00 euro!

meiner meinung nach muss man doch den datentyp int in float oder double konvertieren oder??

außerdem SOLLEn stets die möglichst größten scheine bei der ausgabe gewählt werden (also 50, 20 und 10). habt ihr da ne idee? als hinweise steht da modulorechnung, aber da sehe ich in bezug auf die auszahlung der möglichst größten scheine nicht durch bzw. hab kein plan.

wäre über hilfe sehr erfreut. wenn es auch nur ein teil ist.

danke vielmals
 
richard84 hat gesagt.:
meiner meinung nach muss man doch den datentyp int in float oder double konvertieren oder??

-->
Daten eines kleineren Datentyps werden automatisch (implizit) dem größeren angepasst. Der Compiler nimmt diese Anpassung selbstständig vor.
ein int wird automatisch in einen double umgewandelt...

richard84 hat gesagt.:
außerdem SOLLEn stets die möglichst größten scheine bei der ausgabe gewählt werden (also 50, 20 und 10). habt ihr da ne idee? als hinweise steht da modulorechnung, aber da sehe ich in bezug auf die auszahlung der möglichst größten scheine nicht durch bzw. hab kein plan.

Die Modulorechnung erlaubt dir, mit dem Divisionsrest weiterzuarbeiten...

als kleiner tipp...



Code:
fuffis = betrag/50;
zwannies = (betrag%50)/20;
zehner = ((betrag%50)%20)/10;

Gruß
 
Frank_H hat gesagt.:
richard84 hat gesagt.:
meiner meinung nach muss man doch den datentyp int in float oder double konvertieren oder??

-->
Daten eines kleineren Datentyps werden automatisch (implizit) dem größeren angepasst. Der Compiler nimmt diese Anpassung selbstständig vor.
ein int wird automatisch in einen double umgewandelt...

richard84 hat gesagt.:
außerdem SOLLEn stets die möglichst größten scheine bei der ausgabe gewählt werden (also 50, 20 und 10). habt ihr da ne idee? als hinweise steht da modulorechnung, aber da sehe ich in bezug auf die auszahlung der möglichst größten scheine nicht durch bzw. hab kein plan.

Die Modulorechnung erlaubt dir, mit dem Divisionsrest weiterzuarbeiten...

als kleiner tipp...



Code:
fuffis = betrag/50;
zwannies = (betrag%50)/20;
zehner = ((betrag%50)%20)/10;

Gruß

erstmal danke für die schnelle antwort,
aber muss man die konvertierung nicht extra angeben, das jetzt der datentyp gewechselt wird?? so stets in der aufgabe, das man das angeben soll...
woher weiß das programm, das er nun von int in double oder float soll und wann nicht??

hab ja shcon bißchen was geschrieben, wenn man die kontonummer eingibt, sieht man den aktuellen kontostand ohne komma zahl...wenn man jetzt was abhebt, soll im neuen kontostand dann ,00 stehen (also 2000 drauf, hole 100 ab = ergebnis neuer kontostand 1900,00)
und das kann er ja nicht automatisch machen oder??

das mit den scheinen hab ich mir schon gedahct, aber mit der anweisung, das der IMMER die möglichst größten schein ausgibt komm ich nicht klar. wenn man nämlich 200euro abholt, soll er 4x50 euro scheine ausgeben und nicht 2x50 und 5x20.
seltsam irgendwie...

es nervt wenn man nicht weiterkommt, aber das muss ich jetzt bei programmieren wohl lernen 😀
 
Zur Typenkonvertierung lege ich dir mal folgenden Link aus der Insel ans Herz:

klick mich

Und dann dort bei Punkt 2.3.7 (Casting) schaun, da steht das nochmal beschrieben.

und zu deinem Modulo-Problem:

Schau dir nochmal genau an, was ich da geschrieben hatte mit den fuffis, zwannies etc. das sollte die Lösung sein für "immer" die größten Scheine....

in dem Beispiel für 200 Euro läufts ja wie folgt:

Code:
betrag = 200;
fuffis = betrag/50;                //also 4
zwannis = (betrag%50)/20;  // da betrag%50 = 0 -> 0 / 20 = 0 -> 0 zwannis
zehner = ...                        //analog zu den zwannis, nur einn schritt mehr

gruß
 
erstmal danke für die antwort...
nach langem probieren hab ich es jetzt geschafft. was mir aber noch unklar ist, nen normaler geldautomat zeigt ja sofort nen fehler an, wenn man eingibt: 557 als auszuzahlenden betrag. muss man da nicht auch noch irgendwo ein befehl hinschreiben?? das der irgendwie durch mindestens 10 teilbar ist oder so??

danke im vorraus 😀

mfg
 
habs schon...danke.
jetzt nur noch irgendwie das mit der datentypen konvertierung hinbekommen, das der mir am ende eine kommazahl ausgibt und dann müsst ich es fertig haben...
na mal schaun.

danke trotzdem
 
Code:
if(betrag % 10 != 0) {

     System.out.println("Falsche Eingabe!");

}
so könnt ich mir das dann vorstellen
 
und ohne if gehts nicht irgendwie??
weil ich es in den kapiteln davor noch nicht mit if und sowas hatte...theoretisch mss es ja auch so gehen...irgendwie
 
boolean betragOk = (betrag % 10 == 0);

und dann um das eigentiche programm ein

while(betragOK){
...
}
 
ja aber if, then, while etc. hatte ich noch nicht, also muss es ja auch ohne die gehen bin ich der meinung. so meinte ich das...

jetzt hat sich aber ein neues problem hinzugesellt: vorher war nie was gewesen. wenn ich in textpad 5.2 auf kompilieren gehe, zeigt er mir das an:

javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options

Prozess beendet mit Exit-Code 2

WAS IST DAS AUF EINMAL???
 
ich wüsste nicht wie das ohne if oder while geht.
und ich würde dir schleunigst zu netbeans oder noch besser eclipse raten!
 
richard84 hat gesagt.:
nach muss man doch den datentyp int in float oder double konvertieren oder??

das fällt unter implizite Typumwandlung, der Compiler sieht, dass er eine Typumwandlung vornehmen muss und macht dies automatisch!

Du musst nur eine explizite Anweißung für eine Typumwandlung geben wenn du den Umgekehrten Weg gehst, also von einem großen Wertebereich in einen kleinen ( von long in int ), denn hier kann es zu Informationsverlust führen, wenn beispielsweiße eine Kommastelle verloren geht oder gar auf eine ganze Zahl aufgerundet wird! Deshalb benötigt der Compiler den ausdrücklichen Befehl dies durchzuführen, denn sonst bekommst du nur eine Fehlermeldung;-)
 
will auch versuchen nen geldautomaten zu programmieren aber irgendwie klappt es mit der eingabe nicht... will int verwenden...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben