diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java index 7f0d2602bc1a4719803b5d9e8faffa081b0b9672..8b118b29c06d7cfaf568b0278f933b1d2eeb0ad2 100644 --- a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java +++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java @@ -44,7 +44,6 @@ public class QTI_vargt implements BooleanEvaluable { * @return */ public boolean eval(Element boolElement, ItemContext userContext, EvalContext ect) { - boolean ok = false; ItemInput iinp = userContext.getItemInput(); if (iinp.isEmpty()) return false; // user has given no answer String respident = boolElement.attributeValue("respident"); @@ -56,13 +55,21 @@ public class QTI_vargt implements BooleanEvaluable { // Integer shouldVal = shouldVal.trim(); isVal = isVal.trim(); + float fs = Float.parseFloat(shouldVal); + float fi; try { - Float fs = new Float(shouldVal); - Float fi = new Float(isVal); - ok = (fi.floatValue() > fs.floatValue()); - } catch (NumberFormatException nfe) { - // + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e) { + //try to replace , -> . + isVal = isVal.replace(',', '.'); + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e1) { + //we try all what we can to understand the input value -> false + return false; + } } + boolean ok = (fi > fs); return ok; } diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java index face4362d6fe88cd30090fde428c6b10ee48c053..83d69f04a1c2e7a8ba59560b2e5a98c8bd259fcc 100644 --- a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java +++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java @@ -51,10 +51,21 @@ public class QTI_vargte implements BooleanEvaluable { // we use Float so we are on the safe side, even if comparison was only Integer shouldVal = shouldVal.trim(); isVal = isVal.trim(); - Float fs = new Float(shouldVal); - Float fi = new Float(isVal); - boolean ok = (fi.floatValue() >= fs.floatValue()); + float fs = Float.parseFloat(shouldVal); + float fi; + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e) { + //try to replace , -> . + isVal = isVal.replace(',', '.'); + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e1) { + //we try all what we can to understand the input value -> false + return false; + } + } + boolean ok = (fi >= fs); return ok; } - } diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java index 9e925913805cd1ca03325936ff1b2fdaed066f45..8d9a8cf581d371be4015c28af41b508f049e92e7 100644 --- a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java +++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java @@ -52,9 +52,22 @@ public class QTI_varlt implements BooleanEvaluable { // we use Float so we are on the safe side, even if comparison was only Integer shouldVal = shouldVal.trim(); isVal = isVal.trim(); - Float fs = new Float(shouldVal); - Float fi = new Float(isVal); - boolean ok = (fi.floatValue() < fs.floatValue()); + float fs = Float.parseFloat(shouldVal); + float fi; + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e) { + //try to replace , -> . + isVal = isVal.replace(',', '.'); + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e1) { + //we try all what we can to understand the input value -> false + return false; + } + } + + boolean ok = (fi < fs); return ok; } diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java index a6b2be2019ca03678360dac6e7c979177e5f3e2a..aa01acd165ef2fd17d47fb73225c64ac966dc6ef 100644 --- a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java +++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java @@ -52,9 +52,21 @@ public class QTI_varlte implements BooleanEvaluable { // we use Float so we are on the safe side, even if comparison was only Integer shouldVal = shouldVal.trim(); isVal = isVal.trim(); - Float fs = new Float(shouldVal); - Float fi = new Float(isVal); - boolean ok = (fi.floatValue() <= fs.floatValue()); + float fs = Float.parseFloat(shouldVal); + float fi; + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e) { + //try to replace , -> . + isVal = isVal.replace(',', '.'); + try { + fi = Float.parseFloat(isVal); + } catch (NumberFormatException e1) { + //we try all what we can to understand the input value -> false + return false; + } + } + boolean ok = (fi <= fs); return ok; }