summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnits/utils/UncertainDouble.java
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2021-12-02 16:55:05 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2021-12-02 16:55:05 -0500
commitcc79db65bc347c50267d0a719278ef1d90cf6b1a (patch)
tree65717e8d7e75247ced380a72842c50b94fc61a0e /src/main/java/sevenUnits/utils/UncertainDouble.java
parentc4ae6887c32ee8d2e9e8853ffd12721d4db2fd3b (diff)
parent9c30c3ad4d4658964e2bb2bb5be6c2eebbfbe8af (diff)
Merge branch 'release-0.3.2'
Diffstat (limited to 'src/main/java/sevenUnits/utils/UncertainDouble.java')
-rw-r--r--src/main/java/sevenUnits/utils/UncertainDouble.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/main/java/sevenUnits/utils/UncertainDouble.java b/src/main/java/sevenUnits/utils/UncertainDouble.java
index 8fe4b31..fe41104 100644
--- a/src/main/java/sevenUnits/utils/UncertainDouble.java
+++ b/src/main/java/sevenUnits/utils/UncertainDouble.java
@@ -36,13 +36,14 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
*/
public static final UncertainDouble ZERO = UncertainDouble.of(0, 0);
+ static final String NUMBER_REGEX = "(\\d+(?:[\\.,]\\d+))";
+
/**
* A regular expression that can recognize toString forms
*/
- private static final Pattern TO_STRING = Pattern
- .compile("([a-zA-Z_0-9\\.\\,]+)" // a number
- // optional "± [number]"
- + "(?:\\s*(?:±|\\+-)\\s*([a-zA-Z_0-9\\.\\,]+))?");
+ static final Pattern TO_STRING = Pattern.compile(NUMBER_REGEX
+ // optional "± [number]"
+ + "(?:\\s*(?:±|\\+-)\\s*" + NUMBER_REGEX + ")?");
/**
* Parses a string in the form of {@link UncertainDouble#toString(boolean)}
@@ -60,10 +61,14 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
Objects.requireNonNull(s, "s may not be null");
final Matcher matcher = TO_STRING.matcher(s);
+ if (!matcher.matches())
+ throw new IllegalArgumentException(
+ "Could not parse stirng \"" + s + "\".");
+
double value, uncertainty;
try {
value = Double.parseDouble(matcher.group(1));
- } catch (IllegalStateException | NumberFormatException e) {
+ } catch (final NumberFormatException e) {
throw new IllegalArgumentException(
"String " + s + " not in correct format.");
}