Hallo liebe Forenuser/member,
ich bin lebensälterer Student (30 J.) im ersten Semester Wirtschaftsinfo und soll einen Geldwechselautomaten programmieren
vorab hierzu …ich bin blutjunger anfänger und sitze seit drei wochen jeden tag mehrere stunden am problem…ich bin endgültig am ende mit meinem latein und hoffe jemand kann mir weiterhelfen…wenns geht bitte so dass ich es auch nachvollziehen kann:
Aufgabe 1 : Klasse Geldwechselautomat
Entwerfen Sie eine Klasse, die einen Geldwechselautomaten darstellt. Dieser soll beliebige Geldbeträge so auf verschiedene Münzen aufteilen, dass die Gesamtzahl der Münzen möglichst klein ist.
Beispiel für einen Programmlauf (Benutzereingaben sind farblich hervorgehoben):Eingabe: 7,46 €
Ausgabe:
3 Muenze/n zu 2,00 €
1 Muenze/n zu 1,00 €
0 Muenze/n zu 50 Cent
2 Muenze/n zu 20 Cent
0 Muenze/n zu 10 Cent
1 Muenze/n zu 5 Cent
0 Muenze/n zu 2 Cent
1 Muenze/n zu 1 CentWeiter?(j/n) j
Die acht Münzwerte (2€, 1€, 50cent, 20cent, 10cent, 5cent, 2cent, 1cent) sind in einem Array der Klasse Geldwechselautomat abzuspeichern.
Definieren Sie für die Klasse Geldwechselautomat folgende Methoden:
Berechnung des einzuwechselnden Betrages in Münzwerte in der Methode umrechnung() Einlesen der Geldbeträge in der Methode einlesen(). Achten Sie darauf, dass Geldbeträge sowohl in Euro (z.B. 7,46 €) als auch nur in Cent (z.B. 746 cent) eingegeben werden können. Ausgabe der Münzbeträge in der Methode ausgabe() mit den Angaben: Ausgabe des zu wechselnden Betrages Anzahl der Münzen und Münzwerte Achten Sie darauf, für Geldbeträge 2 Nachkommastellen anzuzeigen. Versuchen Sie, den Betrag so zu wechseln, dass von jedem der acht Münzen etwas dabei ist.. Sie können weitere Methoden definieren, wenn Sie welche benötigen.
Aufgabe 2 : main-Funktionin der Klasse Geldwechselautomat
Entwerfen Sie eine main-Funktion zum Starten des Geldwechselautomaten. Es wird ein Objekt der Klasse Geldwechselautomaten erzeugt. Dieses fordert nun den Benutzer auf, einen Geldbetrag einzugeben, um ihn in Münzen zu wechseln. Der Geldwechselautomat wechselt solange, bis der Benutzer eine 0 eingibt.
Hinweise:Bitte keine Umlaute, kein ß und keine Zeichen oberhalb Ascii-Code 128 in Bezeichnern oder Dateinamen verwenden! Verwenden Sie sprechende Variablennamen , also nicht "i", sondern "idealgewicht". Bitte Attribute als "private" deklarieren!
meine Lösung dazu sind zwei Klassen…ich bin schon relativ weit gekommen habe gestern auch mit meinem Tutor geschrieben der hat mir ne kommentierte fassung zurückgeschrieben aber darf nicht mehr sagen weil er die aufgabe auch korrigieren wird.
einmal…
import java.util.Scanner;
public class berechneWechselgeld
{
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
/**
* Deine Abbruchkriterien sind falsch, eine Eingabe ohne Zeichen ist
* nicht zugelassen, eine EIngabe mit ',' liefert auch Fehler. cent wird
* nicht erkannt, man MUSS Cent schreiben und in jedem Fall wird eine
* Endlosschleife produziert
*/
String geldbetrag;
// Warum nicht gleich geldbetrag was zuweisen?
geldbetrag = sc.nextLine();
System.out.println("Eingabe in €:");
// while (!(geldbetrag = Scanner.nextLine()).equals(0))
// erst Initialisieren, dann klappt das auch mit Vergleichen
// und wenn du etwas in einem String suchst, dann entweder " " oder
// einzelnen Buchstabe ' '
while (!(geldbetrag.equals("0"))) { // solange die Eingabe nicht 0 ist
float wert = umrechnung(geldbetrag);
Geldwechsel_automat ga = new Geldwechsel_automat();
// ga.umrechnung(geldbetrag); //-> Der Fehler sagt: du hast für
// deine Methode den Falschen Datentyp genommen
// ga.umrechnung(FLOAT!!!!)
ga.umrechnung(geldbetrag);
System.out.println(ga);
}
}
private static float umrechnung(String geldbetrag) {
if (geldbetrag.contains("€")) { // Falls das Euro Zeichen vorkommt
geldbetrag = geldbetrag.replace("€", "").trim(); // Zeichen
// entfernen und
// leerzeichen
// entfernen
return Float.parseFloat(geldbetrag);
} else if (geldbetrag.contains("Cent")) { // Falls das Wort "Cent"
// vorkommt
geldbetrag = geldbetrag.replace("Cent", "").trim(); // Wort entfernen und leerzeichen entfernen
return Float.parseFloat(geldbetrag) / 100f; // Wert anpassen
} else { // Ansonsten
System.out.println("Ungültige Eingabe");
return 0;
}
}
}
und dazu dann passend
public class Geldwechsel_automat
{
private int[] wechselgeld = new int[8];
public int[] umrechnung(float geldbetrag)
{
int[] wechselgeld = new int[8];
int iwechselgeld = Math.round(geldbetrag * 100);
// Für 2€
wechselgeld[0] = iwechselgeld / 200;
iwechselgeld = iwechselgeld % 200;
// Für 1€
wechselgeld[1] = iwechselgeld / 100;
iwechselgeld = iwechselgeld % 100;
// Für 0,50€
wechselgeld[2] = iwechselgeld / 50;
iwechselgeld = iwechselgeld % 50;
// Für 0,20€
wechselgeld[3] = iwechselgeld / 20;
iwechselgeld = iwechselgeld % 20;
// Für 0,10€
wechselgeld[4] = iwechselgeld / 10;
iwechselgeld = iwechselgeld % 10;
// Für 0,05€
wechselgeld[5] = iwechselgeld / 5;
iwechselgeld = iwechselgeld % 5;
// Für 0,02€
wechselgeld[6] = iwechselgeld / 2;
iwechselgeld = iwechselgeld % 2;
// Für 0,01€
wechselgeld[7] = iwechselgeld / 1;
iwechselgeld = iwechselgeld % 1;
this.wechselgeld = wechselgeld;
return wechselgeld;
}
public String toString()
{
{
String ausgabe = "Ausgabe: ";
for (int eingabe = 0; eingabe < wechselgeld.length; eingabe++)
{
switch (eingabe)
{
case 0:
ausgabe += "
Muenze/n zu 2,00 €:";
break;
case 1:
ausgabe += "
Muenze/n zu 1,00 €:";
break;
case 2:
ausgabe += "
Muenze/n zu 0,50 Euro:";
break;
case 3:
ausgabe += "
Muenze/n zu 0,20 Euro:";
break;
case 4:
ausgabe += "
Muenze/n zu 0,10 Euro:";
break;
case 5:
ausgabe += "
Muenze/n zu 0,05 Euro:";
break;
case 6:
ausgabe += "
Muenze/n zu 0,02 Euro:";
break;
case 7:
ausgabe += "
Muenze/n zu 0,01 Euro:";
break;
default:
ausgabe += "
Fehler ";
break;
}
ausgabe += wechselgeld[eingabe];
ausgabe += " ";
}
return ausgabe;
}
}
}
beide klassen liegen im selben package was meinen namen trägt…
ich saß die ganze nacht über noch dran habe bestimmt zehn kaffe schon intus und sehe den wald vor bäumen nicht mir…
könnt ihr mir sagen wo jetzt der entscheidene fehler liegt…möglichst nachvollziehbar und step by step…
zu mir : ich hatte vorher noch nie progerfahrung…ist also mein erstes semester mit meiner ersten sprache java …bitte seid gnädig mit mir
und danke allen die hilfreiches posten im voraus
[edit SlaterB: aus Titel herausgenommen: „bis Freitag“]