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.List;
import java.util.Scanner; 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.printf("Der Rückgabebetrag in Höhe von %.2f EURO \n", rückgabebetrag);
System.out.println("wird in folgenden Münzen ausgezahlt:"); System.out.println("wird in folgenden Münzen ausgezahlt:");
List<Muenze> rueckgabeMuenzen = new ArrayList<Muenze>();
while(rückgabebetrag > 1.9) // 2 EURO-Münzen while(rückgabebetrag > 1.9) // 2 EURO-Münzen
{ {
muenzeAusgeben(2, "EURO"); rueckgabeMuenzen.add(muenzeErstellen(2, "EURO"));
rückgabebetrag -= 2.0; rückgabebetrag -= 2.0;
} }
while(rückgabebetrag > 0.9) // 1 EURO-Münzen while(rückgabebetrag > 0.9) // 1 EURO-Münzen
{ {
muenzeAusgeben(1, "EURO"); rueckgabeMuenzen.add(muenzeErstellen(1, "EURO"));
rückgabebetrag -= 1.0; rückgabebetrag -= 1.0;
} }
while(rückgabebetrag > 0.49) // 50 CENT-Münzen while(rückgabebetrag > 0.49) // 50 CENT-Münzen
{ {
muenzeAusgeben(50, "CENT"); rueckgabeMuenzen.add(muenzeErstellen(50, "CENT"));
rückgabebetrag -= 0.5; rückgabebetrag -= 0.5;
} }
while(rückgabebetrag > 0.19) // 20 CENT-Münzen while(rückgabebetrag > 0.19) // 20 CENT-Münzen
{ {
muenzeAusgeben(20, "CENT"); rueckgabeMuenzen.add(muenzeErstellen(20, "CENT"));
rückgabebetrag -= 0.2; rückgabebetrag -= 0.2;
} }
while(rückgabebetrag > 0.09) // 10 CENT-Münzen while(rückgabebetrag > 0.09) // 10 CENT-Münzen
{ {
muenzeAusgeben(10, "CENT"); rueckgabeMuenzen.add(muenzeErstellen(10, "CENT"));
rückgabebetrag -= 0.1; rückgabebetrag -= 0.1;
} }
while(rückgabebetrag > 0.049)// 5 CENT-Münzen while(rückgabebetrag > 0.049)// 5 CENT-Münzen
{ {
muenzeAusgeben(5, "CENT"); rueckgabeMuenzen.add(muenzeErstellen(5, "CENT"));
rückgabebetrag -= 0.05; rückgabebetrag -= 0.05;
} }
muenzenAusgeben(rueckgabeMuenzen);
} }
} }
@@ -153,13 +157,41 @@ class Fahrkartenautomat
} }
} }
public static void muenzeAusgeben(int betrag, String einheit) { public static Muenze muenzeErstellen(int betrag, String einheit) {
System.out.println(" * * *"); Muenze addMuenze = new Muenze(betrag, einheit);
System.out.println(" * *"); return addMuenze;
System.out.printf("* %-2d *\n", betrag); }
System.out.printf("* %-4s *\n", einheit);
System.out.println(" * *"); public static void muenzenAusgeben(List<Muenze> muenzen) {
System.out.println(" * * *"); 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) public static void main(String[] args)
@@ -176,4 +208,30 @@ class Fahrkartenautomat
"vor Fahrtantritt entwerten zu lassen!\n"+ "vor Fahrtantritt entwerten zu lassen!\n"+
"Wir wünschen Ihnen eine gute Fahrt."); "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;
}
} }