07++ display max 3 coins side by side

This commit is contained in:
Joel
2021-01-03 18:13:42 +01:00
parent 4480e4537a
commit 12d47fb272
+72 -14
View File
@@ -1,4 +1,5 @@
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
@@ -111,36 +112,39 @@ class Fahrkartenautomat
System.out.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag);
System.out.println("wird in folgenden Münzen ausgezahlt:");
List<Muenze> rueckgabeMuenzen = new ArrayList<Muenze>();
while(rückgabebetrag > 1.9) // 2 EURO-Münzen
{
muenzeAusgeben(2, "EURO");
rueckgabeMuenzen.add(muenzeErstellen(2, "EURO"));
rückgabebetrag -= 2.0;
}
while(rückgabebetrag > 0.9) // 1 EURO-Münzen
{
muenzeAusgeben(1, "EURO");
rueckgabeMuenzen.add(muenzeErstellen(1, "EURO"));
rückgabebetrag -= 1.0;
}
while(rückgabebetrag > 0.49) // 50 CENT-Münzen
{
muenzeAusgeben(50, "CENT");
rueckgabeMuenzen.add(muenzeErstellen(50, "CENT"));
rückgabebetrag -= 0.5;
}
while(rückgabebetrag > 0.19) // 20 CENT-Münzen
{
muenzeAusgeben(20, "CENT");
rueckgabeMuenzen.add(muenzeErstellen(20, "CENT"));
rückgabebetrag -= 0.2;
}
while(rückgabebetrag > 0.09) // 10 CENT-Münzen
{
muenzeAusgeben(10, "CENT");
rueckgabeMuenzen.add(muenzeErstellen(10, "CENT"));
rückgabebetrag -= 0.1;
}
while(rückgabebetrag > 0.049)// 5 CENT-Münzen
{
muenzeAusgeben(5, "CENT");
rueckgabeMuenzen.add(muenzeErstellen(5, "CENT"));
rückgabebetrag -= 0.05;
}
muenzenAusgeben(rueckgabeMuenzen);
}
}
@@ -153,13 +157,41 @@ class Fahrkartenautomat
}
}
public static void muenzeAusgeben(int betrag, String einheit) {
System.out.println(" * * *");
System.out.println(" * *");
System.out.printf("* %-2d *\n", betrag);
System.out.printf("* %-4s *\n", einheit);
System.out.println(" * *");
System.out.println(" * * *");
public static Muenze muenzeErstellen(int betrag, String einheit) {
Muenze addMuenze = new Muenze(betrag, einheit);
return addMuenze;
}
public static void muenzenAusgeben(List<Muenze> muenzen) {
int anzahlZeilen = (int)((double)muenzen.size()/(double)3) +1;
int[] anzahlMuenzen = new int[anzahlZeilen];
for (int i=0; i<anzahlZeilen-1; i++) anzahlMuenzen[i] = 3;
if (anzahlZeilen == 1) anzahlMuenzen[0] = muenzen.size();
int fMuenzen=0;
for (int i=0; i<anzahlZeilen; i++) {
System.out.println(" * * * ".repeat(anzahlMuenzen[i]));
System.out.println(" * * ".repeat(anzahlMuenzen[i]));
String zBetrag = "";
String zEinheit = "";
int j=0;
for (; (j<anzahlMuenzen[i]) || j>3; j++) {
zBetrag += String.format("* %-2d * ", muenzen.get(j+fMuenzen).getBetrag());
zEinheit += String.format("* %-4s * ", muenzen.get(j+fMuenzen).getEinheit());
}
System.out.println(zBetrag);
System.out.println(zEinheit);
System.out.println(" * * ".repeat(anzahlMuenzen[i]));
System.out.println(" * * * ".repeat(anzahlMuenzen[i]));
fMuenzen+=j;
try {
anzahlMuenzen[i+1]=muenzen.size()-fMuenzen;
}
catch (ArrayIndexOutOfBoundsException exception) {
}
}
}
public static void main(String[] args)
@@ -176,4 +208,30 @@ class Fahrkartenautomat
"vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt.");
}
}
class Muenze {
private int betrag;
private String einheit;
public Muenze(int betrag, String einheit) {
this.setBetrag(betrag);
this.einheit=einheit;
}
public int getBetrag() {
return betrag;
}
public void setBetrag(int betrag) {
this.betrag = betrag;
}
public String getEinheit() {
return einheit;
}
public void setEinheit(String einheit) {
this.einheit = einheit;
}
}