updated based on latest changes in LoadingBar

This commit is contained in:
fabianArbeit 2025-01-22 16:54:59 +01:00
parent 8386b1b53d
commit c14f2455e4

View File

@ -1,3 +1,6 @@
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@ -14,6 +17,7 @@ public class SimpleLoadingBar {
private static final DecimalFormat PERCENTAGE_FORMAT = new DecimalFormat("00.00");
private static final int MINS_PER_HOUR = 60;
private static final int LINE_LENGTH = 100;
private static final MathContext MC_INTEGER = new MathContext(1, RoundingMode.HALF_EVEN);
public static void main(String[] args) {
@ -114,9 +118,11 @@ public class SimpleLoadingBar {
private static String fillLoadingBar(long initialMinutes, long passedMinutes, boolean progressive) {
double wholePercentage = ((double) passedMinutes / initialMinutes) * 100;
BigDecimal wholePercentage = BigDecimal.valueOf(100)
.multiply(BigDecimal.valueOf(passedMinutes)
.divide(BigDecimal.valueOf(initialMinutes), MathContext.DECIMAL64));
long remainingMinutes = initialMinutes - passedMinutes;
int numberOfEquals = (int) wholePercentage;
int numberOfEquals = wholePercentage.intValue();
var sb = new StringBuilder("[");
for (int i = 0; i < LINE_LENGTH; i++) {
if (i < numberOfEquals) {
@ -135,7 +141,9 @@ public class SimpleLoadingBar {
private static String minutesToTimeString(long minutes) {
return LocalTime.of((int) minutes / MINS_PER_HOUR, (int) minutes % MINS_PER_HOUR).format(TIME_FORMATTER);
var minutesBD = BigDecimal.valueOf(minutes);
BigDecimal[] hoursAndMinutes = minutesBD.divideAndRemainder(BigDecimal.valueOf(MINS_PER_HOUR), MC_INTEGER);
return LocalTime.of(hoursAndMinutes[0].intValue(), hoursAndMinutes[1].intValue()).format(TIME_FORMATTER);
}