Java programmieren?

Computer Forum

Zurück   Computer Forum - PC Forum - ModernBoard.de > Computerprobleme > Webmaster Hilfe / Programmierer Forum

Sie betrachten gerade: Java programmieren?


Antwort
Alt 17.10.2009, 14:04 Java programmieren? #1
Erfahrener Benutzer
 
Registriert seit: 04.03.2007
Beiträge: 173
Standard Java programmieren?

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!

Alt 17.10.2009, 19:25 Java programmieren? #2
Sviper
Gast
 
Beiträge: n/a
Standard

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?
Alt 17.10.2009, 19:27 Java programmieren? #3
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 04.03.2007
Beiträge: 173
Standard

@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
Alt 17.10.2009, 20:15 Java programmieren? #4
Sviper
Gast
 
Beiträge: n/a
Standard

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.
Alt 17.10.2009, 21:23 Java programmieren? #5
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 04.03.2007
Beiträge: 173
Standard

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:
Alt 18.10.2009, 01:11 Java programmieren? #6
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard

Ohne irgendwelche Lösungen zu präsentieren.... Für solche Aufgaben eignet sich der Modulo-Operator besser als ellenlange Berechnungen.
Alt 18.10.2009, 01:45 Java programmieren? #7
Sviper
Gast
 
Beiträge: n/a
Standard

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?
Alt 18.10.2009, 13:15 Java programmieren? #8
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 04.03.2007
Beiträge: 173
Standard

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);
}
}
Alt 18.10.2009, 21:32 Java programmieren? #9
Sviper
Gast
 
Beiträge: n/a
Standard

Zitat:
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.
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.
Alt 18.10.2009, 22:14 Java programmieren? #10
Erfahrener Benutzer
Themenstarter
 
Registriert seit: 04.03.2007
Beiträge: 173
Standard

habs geschafft!!!! arty:

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:
Antwort

RB

Thema: Java programmieren?


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen für: Java programmieren?
Thema Autor Forum Antworten Letzter Beitrag
chat mit java (java applet fenster)
hallo kennt jemand verschiedene chats wie z.b. knuddels.de? oder mainfranken-chat.de? dort wird java benötigt, da die fenster darin geöffnet...
-SCHNITZEL- Nokia N95 Forum 3 14.04.2008 21:52
DRINGEND! Java 1.3 und Java 1.4 parallel installieren
Hallo liebe Forumsteilnehmer, ich habe ein riesen Problem (oder bin ich nur zu blöde es richtig zu machen): Ich muss auf verschiedenen Seiten...
Gast Heiko Windows XP Probleme 0 29.12.2006 14:10
Java programmieren lernen :)
Hallo alle zusammen. Da ich in ca. 3 jahren "internet computing" studieren möchte, wollte ich mich schon jetzt mit JAVA beschäftigen. Da dies ein...
Baumi1987 Webmaster Hilfe / Programmierer Forum 3 02.11.2006 21:04
Java programmieren
Du willst mit Java anfangen zu programmieren? Dann auf... 1) Besorgt Dir das SDK (Software Developer Kit) von Sun ...
steffen Webmaster Hilfe / Programmierer Forum 9 31.10.2006 11:49
Fragen zu "Java programmieren" !
Hi Ich habe eine Frage zum oben angepinten Thema: Java programmieren. Also entweder bin ich total dumm oder der Thread ist nur was für Profis....
Marty_07 Webmaster Hilfe / Programmierer Forum 14 01.09.2006 14:26

Zurück   Computer Forum - PC Forum - ModernBoard.de > Computerprobleme > Webmaster Hilfe / Programmierer Forum

Besucher kamen mit folgenden Begriffen auf die Seite

java geldautomat programmieren

,

Java warum keine kommazahlen als double

,

scanner java anzahl geldscheine public class geldscheine

,

java programmierung bankautomat

,

java bankautomat programmieren

Powered by vBadvanced CMPS v3.2.2


Sie betrachten gerade: Java programmieren?