- show progress to next drinking interval
- show minutes until next drinking interval
This commit is contained in:
@@ -19,6 +19,7 @@ public class DrinkingBar {
|
||||
private static final int MINUTES_BEFORE_PAUSE = 4 * MINS_PER_HOUR + MINS_PER_HALF_HOUR;
|
||||
private static final int MINUTES_WITH_PAUSE = 6 * MINS_PER_HOUR;
|
||||
private static final DecimalFormat LITER_FORMAT = new DecimalFormat("0.00");
|
||||
private static final DecimalFormat PERCENTAGE_FORMAT = new DecimalFormat("00.00");
|
||||
private static final BigDecimal MINS_PER_HOUR_BD = BigDecimal.valueOf(MINS_PER_HOUR);
|
||||
private static final MathContext MC_INTEGER = new MathContext(1, RoundingMode.HALF_EVEN);
|
||||
|
||||
@@ -36,7 +37,10 @@ public class DrinkingBar {
|
||||
if (passedMinutes <= MINUTES_BEFORE_PAUSE || passedMinutes > MINUTES_WITH_PAUSE) {
|
||||
double currentLitres = 2.0 / totalMinutes * passedMinutes + 0.25;
|
||||
double printedLitres = currentLitres - (currentLitres % 0.25);
|
||||
System.out.print("\rAktuelles Volumen: " + LITER_FORMAT.format(printedLitres) + "L");
|
||||
double currentProgressToNextStep = 100 / 0.25 * (currentLitres - printedLitres);
|
||||
long minutesToNextStep = getMinutesToNextStep(currentLitres, totalMinutes);
|
||||
System.out.print("\rAktuelles Volumen: " + LITER_FORMAT.format(printedLitres) + "L - "
|
||||
+ PERCENTAGE_FORMAT.format(currentProgressToNextStep) + "% - " + minutesToTimeString(minutesToNextStep));
|
||||
prevPrintedLitres = printedLitres;
|
||||
}
|
||||
try {
|
||||
@@ -54,6 +58,16 @@ public class DrinkingBar {
|
||||
}
|
||||
|
||||
|
||||
private static long getMinutesToNextStep(double currentLitres, long totalMinutes) {
|
||||
// berechne Liter benötigt bis zum nächsten 0.25er Schritt
|
||||
double litresToNextStep = 0.25 - (currentLitres % 0.25);
|
||||
// berechne Minuten benötigt für 1 Liter
|
||||
double minutesPerLitre = totalMinutes / 2.0;
|
||||
// berechne Minuten benötigt bis zum nächsten 0.25er Schritt
|
||||
return (long) (minutesPerLitre * litresToNextStep) + 1;
|
||||
}
|
||||
|
||||
|
||||
private static String minutesToTimeString(long minutes) { // DEBUG
|
||||
var minutesBD = BigDecimal.valueOf(minutes);
|
||||
BigDecimal[] hoursAndMinutes = minutesBD.divideAndRemainder(MINS_PER_HOUR_BD, MC_INTEGER);
|
||||
|
Reference in New Issue
Block a user