From 7edaa418067580434ef189a361a6802faabb3b1e Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 11 May 2024 22:10:03 -0400 Subject: Allow equals sign --- .../java/de/hysky/skyblocker/utils/Calculator.java | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/utils/Calculator.java') diff --git a/src/main/java/de/hysky/skyblocker/utils/Calculator.java b/src/main/java/de/hysky/skyblocker/utils/Calculator.java index 30c1ee64..7b0baaf6 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Calculator.java +++ b/src/main/java/de/hysky/skyblocker/utils/Calculator.java @@ -15,13 +15,14 @@ public class Calculator { int tokenLength; } - private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+\\.?\\d*)([kmbse]?)"); - private static final Map magnitudeValues = Map.of( - "s", 64, - "e", 160, - "k", 1000, - "m", 1000000, - "b", 1000000000 + private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+\\.?\\d*)([sekmbt]?)"); + private static final Map MAGNITUDE_VALUES = Map.of( + "s", 64L, + "e", 160L, + "k", 1_000L, + "m", 1_000_000L, + "b", 1_000_000_000L, + "t", 1_000_000_000_000L ); private static List lex(String input) { @@ -88,7 +89,7 @@ public class Calculator { Deque operatorStack = new ArrayDeque<>(); List outputQueue = new ArrayList<>(); - for (Token shuntingToken : tokens) + for (Token shuntingToken : tokens) { switch (shuntingToken.type) { case NUMBER -> outputQueue.add(shuntingToken); case OPERATOR -> { @@ -122,6 +123,7 @@ public class Calculator { } } } + } //empty the operator stack while (!operatorStack.isEmpty()) { Token leftToken = operatorStack.pop(); @@ -189,10 +191,10 @@ public class Calculator { String magnitude = numberMatcher.group(2); if (!magnitude.isEmpty()) { - if (!magnitudeValues.containsKey(magnitude)) {//its invalid if its another letter + if (!MAGNITUDE_VALUES.containsKey(magnitude)) {//its invalid if its another letter throw new UnsupportedOperationException("Invalid magnitude"); } - number *= magnitudeValues.get(magnitude); + number *= MAGNITUDE_VALUES.get(magnitude); } return number; @@ -200,7 +202,7 @@ public class Calculator { public static double calculate(String equation) { //custom bit for replacing purse with its value - equation = equation.toLowerCase().replaceAll("p(urse)?",String.valueOf((int)Utils.getPurse())); + equation = equation.toLowerCase().replaceAll("p(urse)?", String.valueOf(Utils.getPurse())); return evaluate(shunt(lex(equation))); } } -- cgit