From 7451194aaf573e50eb04849d754b5bc8c0cba05b Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Wed, 1 Mar 2017 07:39:26 +1100 Subject: [PATCH] Value.calculate returns void --- .../bytezone/diskbrowser/visicalc/Abs.java | 4 +- .../diskbrowser/visicalc/AbstractValue.java | 43 +++++----- .../bytezone/diskbrowser/visicalc/And.java | 5 +- .../diskbrowser/visicalc/Average.java | 4 +- .../bytezone/diskbrowser/visicalc/Cell.java | 19 ++--- .../bytezone/diskbrowser/visicalc/Choose.java | 6 -- .../diskbrowser/visicalc/Condition.java | 6 +- .../bytezone/diskbrowser/visicalc/Count.java | 4 +- .../bytezone/diskbrowser/visicalc/Error.java | 6 -- .../diskbrowser/visicalc/Expression.java | 11 +-- .../bytezone/diskbrowser/visicalc/Format.java | 80 ++++++++++++------- src/com/bytezone/diskbrowser/visicalc/If.java | 4 +- .../bytezone/diskbrowser/visicalc/Int.java | 3 +- .../diskbrowser/visicalc/IsError.java | 4 +- .../bytezone/diskbrowser/visicalc/IsNa.java | 3 +- .../bytezone/diskbrowser/visicalc/Lookup.java | 6 +- .../bytezone/diskbrowser/visicalc/Max.java | 4 +- .../bytezone/diskbrowser/visicalc/Min.java | 4 +- src/com/bytezone/diskbrowser/visicalc/Na.java | 6 -- .../bytezone/diskbrowser/visicalc/Npv.java | 4 +- .../bytezone/diskbrowser/visicalc/Number.java | 6 -- src/com/bytezone/diskbrowser/visicalc/Or.java | 5 +- src/com/bytezone/diskbrowser/visicalc/Pi.java | 6 -- .../bytezone/diskbrowser/visicalc/Sheet.java | 2 +- .../bytezone/diskbrowser/visicalc/Sum.java | 4 +- .../bytezone/diskbrowser/visicalc/Value.java | 8 +- 26 files changed, 111 insertions(+), 146 deletions(-) diff --git a/src/com/bytezone/diskbrowser/visicalc/Abs.java b/src/com/bytezone/diskbrowser/visicalc/Abs.java index afbcc0f..09239ad 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Abs.java +++ b/src/com/bytezone/diskbrowser/visicalc/Abs.java @@ -10,7 +10,7 @@ public class Abs extends Function } @Override - public Value calculate () + public void calculate () { if (source == null) { @@ -20,7 +20,5 @@ public class Abs extends Function value = Math.abs (source.getValue ()); valueType = source.getValueType (); - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java b/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java index 51fabdb..f5e0ae7 100644 --- a/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java +++ b/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java @@ -47,46 +47,51 @@ public abstract class AbstractValue implements Value case NA: return "NA"; case ERROR: - return "Error"; + return "ERROR"; default: return ""; } } - String getValueText (Value value, int depth) + @Override + public void calculate () + { + } + + // for debugging + String getValueText (int depth) { StringBuilder text = new StringBuilder (); - String typeText = " " + value.getTypeText (); - if (value.isValueType (ValueType.VALUE)) + String typeText = " " + getTypeText (); + if (isValueType (ValueType.VALUE)) { - String valueText = String.format ("%f", value.getValue ()); + String valueText = String.format ("%f", getValue ()); text.append (String.format ("| %-10s : %-69s |%n", typeText, valueText)); } else - text.append ( - String.format ("| %-10s : %-69s |%n", typeText, value.getValueType ())); + text.append (String.format ("| %-10s : %-69s |%n", typeText, getValueType ())); - if (value instanceof Expression) + if (this instanceof Expression) { text.append ( - String.format ("| Expression : %-69s |%n", ((Expression) value).fullText ())); - for (Value v : (Expression) value) - text.append (getValueText (v, depth + 1)); + String.format ("| Expression : %-69s |%n", ((Expression) this).fullText ())); + for (Value v : (Expression) this) + text.append (((AbstractValue) v).getValueText (depth + 1)); } - else if (value instanceof Function) + else if (this instanceof Function) { text.append ( - String.format ("| Function : %-69s |%n", ((Function) value).fullText)); - for (Value v : (Function) value) - text.append (getValueText (v, depth + 1)); + String.format ("| Function : %-69s |%n", ((Function) this).fullText)); + for (Value v : (Function) this) + text.append (((AbstractValue) v).getValueText (depth + 1)); } - else if (value instanceof Condition) + else if (this instanceof Condition) { text.append ( - String.format ("| Condition : %-69s |%n", ((Condition) value).fullText)); - for (Value v : (Condition) value) - text.append (getValueText (v, depth + 1)); + String.format ("| Condition : %-69s |%n", ((Condition) this).fullText)); + for (Value v : (Condition) this) + text.append (((AbstractValue) v).getValueText (depth + 1)); } return text.toString (); diff --git a/src/com/bytezone/diskbrowser/visicalc/And.java b/src/com/bytezone/diskbrowser/visicalc/And.java index 9630b9d..ee0f738 100644 --- a/src/com/bytezone/diskbrowser/visicalc/And.java +++ b/src/com/bytezone/diskbrowser/visicalc/And.java @@ -16,7 +16,7 @@ class And extends Function } @Override - public Value calculate () + public void calculate () { for (Condition condition : conditions) { @@ -24,10 +24,9 @@ class And extends Function if (condition.getValue () == 0) { value = 0; - return this; + return; } } value = 1; - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Average.java b/src/com/bytezone/diskbrowser/visicalc/Average.java index 9853708..a4693a3 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Average.java +++ b/src/com/bytezone/diskbrowser/visicalc/Average.java @@ -11,7 +11,7 @@ public class Average extends Function } @Override - public Value calculate () + public void calculate () { double total = 0.0; int totalChecked = 0; @@ -39,7 +39,5 @@ public class Average extends Function value = total / totalChecked; valueType = ValueType.VALUE; } - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Cell.java b/src/com/bytezone/diskbrowser/visicalc/Cell.java index 0679655..2fc47a9 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Cell.java +++ b/src/com/bytezone/diskbrowser/visicalc/Cell.java @@ -2,7 +2,6 @@ package com.bytezone.diskbrowser.visicalc; class Cell extends AbstractValue implements Comparable { - // private static final DecimalFormat nf = new DecimalFormat ("#####0.00"); private static final String line = "+----------------------------------------" + "--------------------------------------------+"; private static final String empty = " "; @@ -10,7 +9,6 @@ class Cell extends AbstractValue implements Comparable private final Address address; private final Sheet parent; private CellType cellType; - // private final Format format = new Format (); private String expressionText; private char cellFormat = ' '; @@ -72,6 +70,8 @@ class Cell extends AbstractValue implements Comparable void setValue (String command) { + assert cellType == CellType.EMPTY; + if (!command.isEmpty () && command.charAt (0) == '"') { label = command.substring (1); @@ -143,10 +143,11 @@ class Cell extends AbstractValue implements Comparable return Format.justify (empty, colWidth, ' '); case VALUE: - if (value == null) - calculate (); + if (!isValueType (ValueType.VALUE)) + return Format.justify (value.getText (), colWidth, 'R'); + char formatChar = cellFormat != ' ' ? cellFormat : globalFormat; - return Format.format (value, formatChar, colWidth); + return " " + Format.format (value, formatChar, colWidth - 1); default: assert false; @@ -193,10 +194,10 @@ class Cell extends AbstractValue implements Comparable } @Override - public Value calculate () + public void calculate () { if (value != null && value.isValueType (ValueType.VALUE)) - return this; + return; if (value == null) { @@ -208,7 +209,7 @@ class Cell extends AbstractValue implements Comparable value.calculate (); - return this; + return; } public String getDebugText () @@ -240,7 +241,7 @@ class Cell extends AbstractValue implements Comparable if (value == null) text.append (String.format ("| Value : %-69s |%n", "null")); else - text.append (getValueText (value, 0)); + text.append (((AbstractValue) value).getValueText (0)); break; default: diff --git a/src/com/bytezone/diskbrowser/visicalc/Choose.java b/src/com/bytezone/diskbrowser/visicalc/Choose.java index 3609006..2f40660 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Choose.java +++ b/src/com/bytezone/diskbrowser/visicalc/Choose.java @@ -17,10 +17,4 @@ public class Choose extends Function range = new Range (rangeText); source = new Number (sourceText); } - - @Override - public Value calculate () - { - return null; - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Condition.java b/src/com/bytezone/diskbrowser/visicalc/Condition.java index 995e4ab..780f487 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Condition.java +++ b/src/com/bytezone/diskbrowser/visicalc/Condition.java @@ -49,7 +49,7 @@ class Condition extends AbstractValue implements Iterable } @Override - public Value calculate () + public void calculate () { value = 0; @@ -67,7 +67,7 @@ class Condition extends AbstractValue implements Iterable if (conditionExpression.isValueType (ValueType.ERROR) || valueExpression.isValueType (ValueType.ERROR)) - return this; + return; double conditionResult = conditionExpression.getValue (); double valueResult = valueExpression.getValue (); @@ -86,8 +86,6 @@ class Condition extends AbstractValue implements Iterable value = conditionResult >= valueResult ? 1 : 0; else System.out.printf ("Unexpected comparator result [%s]%n", comparator); - - return this; } @Override diff --git a/src/com/bytezone/diskbrowser/visicalc/Count.java b/src/com/bytezone/diskbrowser/visicalc/Count.java index a34867b..d80d912 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Count.java +++ b/src/com/bytezone/diskbrowser/visicalc/Count.java @@ -11,7 +11,7 @@ class Count extends Function } @Override - public Value calculate () + public void calculate () { value = 0; valueType = ValueType.VALUE; @@ -31,7 +31,5 @@ class Count extends Function if (cell.getValue () != 0.0) value++; } - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Error.java b/src/com/bytezone/diskbrowser/visicalc/Error.java index f86e54a..07623e2 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Error.java +++ b/src/com/bytezone/diskbrowser/visicalc/Error.java @@ -13,10 +13,4 @@ class Error extends Function { return 0; } - - @Override - public Value calculate () - { - return this; - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Expression.java b/src/com/bytezone/diskbrowser/visicalc/Expression.java index e3316bf..b335a19 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Expression.java +++ b/src/com/bytezone/diskbrowser/visicalc/Expression.java @@ -29,7 +29,6 @@ class Expression extends AbstractValue implements Iterable // [.3*(B4+B7+B8+B9)] // [+N12+(P12*(.2*K12+K9-O12))] - // private final List values = new ArrayList (); private final List operators = new ArrayList (); private final List signs = new ArrayList (); @@ -144,12 +143,12 @@ class Expression extends AbstractValue implements Iterable } @Override - public Value calculate () + public void calculate () { if (values.size () == 0) { System.out.println ("nothing to calculate: " + text); - return this; + return; } try @@ -163,7 +162,7 @@ class Expression extends AbstractValue implements Iterable else { valueType = thisValue.getValueType (); - return this; + return; } String sign = signs.get (0); @@ -181,7 +180,7 @@ class Expression extends AbstractValue implements Iterable else { valueType = thisValue.getValueType (); - return this; + return; } sign = signs.get (i); @@ -211,8 +210,6 @@ class Expression extends AbstractValue implements Iterable valueType = ValueType.ERROR; e.printStackTrace (); } - - return this; } private String checkBrackets (String input) diff --git a/src/com/bytezone/diskbrowser/visicalc/Format.java b/src/com/bytezone/diskbrowser/visicalc/Format.java index 26c4c41..10d2769 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Format.java +++ b/src/com/bytezone/diskbrowser/visicalc/Format.java @@ -2,45 +2,63 @@ package com.bytezone.diskbrowser.visicalc; import java.text.DecimalFormat; -import com.bytezone.diskbrowser.visicalc.Value.ValueType; - public class Format { private static final DecimalFormat nf = new DecimalFormat ("#####0.00"); static String format (Value value, char formatChar, int colWidth) { - if (!value.isValueType (ValueType.VALUE)) - return justify (value.getText (), colWidth, formatChar); + double actualValue = value.getValue (); + if (actualValue == -0.0) + actualValue = 0; - if (formatChar == 'I') + switch (formatChar) { - String integerFormat = String.format ("%%%d.0f", colWidth); - return String.format (integerFormat, value.getValue ()); - } - else if (formatChar == '$') - { - String currencyFormat = String.format ("%%%d.%ds", colWidth, colWidth); - return String.format (currencyFormat, nf.format (value.getValue ())); - } - else if (formatChar == '*') - { - String graphFormat = String.format ("%%-%d.%ds", colWidth, colWidth); - // this is not finished - return String.format (graphFormat, "********************"); - } - else - { - // this could be improved - String numberFormat = String.format ("%%%d.5f", colWidth + 6); - String val = String.format (numberFormat, value.getValue ()); - while (val.endsWith ("0")) - val = ' ' + val.substring (0, val.length () - 1); - if (val.endsWith (".")) - val = ' ' + val.substring (0, val.length () - 1); - if (val.length () > colWidth) - val = val.substring (val.length () - colWidth); - return val; + case 'L': + case 'R': + case ' ': + // this could be improved + String numberFormat = String.format ("%%%d.5f", colWidth + 6); + String val = String.format (numberFormat, actualValue); + + while (val.endsWith ("0")) + val = val.substring (0, val.length () - 1); + if (val.endsWith (".")) + val = val.substring (0, val.length () - 1); + if (val.startsWith ("0.")) + val = val.substring (1); + + if (val.length () > colWidth) + val = val.substring (val.length () - colWidth); + + // System.out.printf ("len:%d fmt: %s%n", val.length (), formatChar); + if (val.startsWith (" ") && formatChar == 'L') + { + String leftFormat = String.format ("%%-%ds", colWidth); + val = String.format (leftFormat, val.trim ()); + } + + return val; + + case 'I': + String integerFormat = String.format ("%%%d.0f", colWidth); + String result = String.format (integerFormat, actualValue); + if (result.length () > colWidth) + return ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>".substring (0, colWidth); + return result; + + case '$': + String currencyFormat = String.format ("%%%d.%ds", colWidth, colWidth); + return String.format (currencyFormat, nf.format (actualValue)); + + case '*': + String graphFormat = String.format ("%%-%d.%ds", colWidth, colWidth); + // this is not finished + return String.format (graphFormat, "********************"); + + default: + System.out.printf ("[%s]%n", formatChar); + return "??????????????????????".substring (0, colWidth); } } diff --git a/src/com/bytezone/diskbrowser/visicalc/If.java b/src/com/bytezone/diskbrowser/visicalc/If.java index 5c8ca59..e4c7965 100644 --- a/src/com/bytezone/diskbrowser/visicalc/If.java +++ b/src/com/bytezone/diskbrowser/visicalc/If.java @@ -24,7 +24,7 @@ class If extends Function } @Override - public Value calculate () + public void calculate () { valueType = ValueType.VALUE; condition.calculate (); @@ -59,8 +59,6 @@ class If extends Function else value = expFalse.getValue (); } - - return this; } @Override diff --git a/src/com/bytezone/diskbrowser/visicalc/Int.java b/src/com/bytezone/diskbrowser/visicalc/Int.java index a9c3eba..30a504b 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Int.java +++ b/src/com/bytezone/diskbrowser/visicalc/Int.java @@ -9,11 +9,10 @@ public class Int extends Function } @Override - public Value calculate () + public void calculate () { Expression exp = new Expression (parent, functionText); value = (int) exp.getValue (); valueType = exp.getValueType (); - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsError.java b/src/com/bytezone/diskbrowser/visicalc/IsError.java index 54c2bd8..f4520ed 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsError.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsError.java @@ -10,14 +10,12 @@ class IsError extends Function } @Override - public Value calculate () + public void calculate () { if (cell == null) cell = parent.getCell (functionText); value = cell == null ? 1 : cell.isValueType (ValueType.ERROR) ? 1 : 0; valueType = ValueType.VALUE; - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsNa.java b/src/com/bytezone/diskbrowser/visicalc/IsNa.java index 4cc9044..0e87cc9 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsNa.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsNa.java @@ -10,7 +10,7 @@ public class IsNa extends Function } @Override - public Value calculate () + public void calculate () { if (expression == null) expression = new Expression (parent, functionText); @@ -18,6 +18,5 @@ public class IsNa extends Function expression.calculate (); value = expression.getValue (); valueType = expression.getValueType (); - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Lookup.java b/src/com/bytezone/diskbrowser/visicalc/Lookup.java index f15f5b5..5cbdfcd 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Lookup.java +++ b/src/com/bytezone/diskbrowser/visicalc/Lookup.java @@ -18,7 +18,7 @@ class Lookup extends Function } @Override - public Value calculate () + public void calculate () { if (source == null) { @@ -30,7 +30,7 @@ class Lookup extends Function if (!source.isValueType (ValueType.VALUE)) { valueType = source.getValueType (); - return this; + return; } double sourceValue = source.getValue (); @@ -54,8 +54,6 @@ class Lookup extends Function value = adjacentCell.getValue (); valueType = ValueType.VALUE; } - - return this; } // @LOOKUP(B8,F3...F16) diff --git a/src/com/bytezone/diskbrowser/visicalc/Max.java b/src/com/bytezone/diskbrowser/visicalc/Max.java index 18c5dde..a9afee6 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Max.java +++ b/src/com/bytezone/diskbrowser/visicalc/Max.java @@ -11,7 +11,7 @@ class Max extends Function } @Override - public Value calculate () + public void calculate () { value = Double.MIN_VALUE; int totalChecked = 0; @@ -38,7 +38,5 @@ class Max extends Function valueType = ValueType.NA; else valueType = ValueType.VALUE; - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Min.java b/src/com/bytezone/diskbrowser/visicalc/Min.java index 51ce4f1..d80c4ce 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Min.java +++ b/src/com/bytezone/diskbrowser/visicalc/Min.java @@ -11,7 +11,7 @@ class Min extends Function } @Override - public Value calculate () + public void calculate () { value = Double.MAX_VALUE; int totalChecked = 0; @@ -38,7 +38,5 @@ class Min extends Function valueType = ValueType.NA; else valueType = ValueType.VALUE; - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Na.java b/src/com/bytezone/diskbrowser/visicalc/Na.java index 02e4bb4..a01a737 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Na.java +++ b/src/com/bytezone/diskbrowser/visicalc/Na.java @@ -13,10 +13,4 @@ public class Na extends Function { return 0; } - - @Override - public Value calculate () - { - return this; - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Npv.java b/src/com/bytezone/diskbrowser/visicalc/Npv.java index 8b9faca..83d706a 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Npv.java +++ b/src/com/bytezone/diskbrowser/visicalc/Npv.java @@ -21,7 +21,7 @@ public class Npv extends Function } @Override - public Value calculate () + public void calculate () { value = 0; valueType = ValueType.VALUE; @@ -40,7 +40,5 @@ public class Npv extends Function double temp = cell.getValue (); } - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Number.java b/src/com/bytezone/diskbrowser/visicalc/Number.java index e57115b..4defdb9 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Number.java +++ b/src/com/bytezone/diskbrowser/visicalc/Number.java @@ -22,10 +22,4 @@ class Number extends AbstractValue { return String.format ("Number: %f", value); } - - @Override - public Value calculate () - { - return this; - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Or.java b/src/com/bytezone/diskbrowser/visicalc/Or.java index acc6fd2..a3029fd 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Or.java +++ b/src/com/bytezone/diskbrowser/visicalc/Or.java @@ -16,7 +16,7 @@ class Or extends Function } @Override - public Value calculate () + public void calculate () { for (Condition condition : conditions) { @@ -24,10 +24,9 @@ class Or extends Function if (condition.getValue () == 1) { value = 1; - return this; + return; } } value = 0; - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Pi.java b/src/com/bytezone/diskbrowser/visicalc/Pi.java index 2e9801e..66391e0 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Pi.java +++ b/src/com/bytezone/diskbrowser/visicalc/Pi.java @@ -7,10 +7,4 @@ class Pi extends Function super (parent, text); value = Math.PI; } - - @Override - public Value calculate () - { - return this; - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Sheet.java b/src/com/bytezone/diskbrowser/visicalc/Sheet.java index 6439e5a..fd39181 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sheet.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sheet.java @@ -21,7 +21,7 @@ public class Sheet private final Map columnOrderCells = new TreeMap (); private final List lines = new ArrayList (); - private char globalFormat; + private char globalFormat = ' '; private final Map columnWidths = new TreeMap (); private int columnWidth = 12; diff --git a/src/com/bytezone/diskbrowser/visicalc/Sum.java b/src/com/bytezone/diskbrowser/visicalc/Sum.java index 5a63890..ecac450 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sum.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sum.java @@ -11,7 +11,7 @@ class Sum extends Function } @Override - public Value calculate () + public void calculate () { value = 0; valueType = ValueType.VALUE; @@ -30,7 +30,5 @@ class Sum extends Function value += cell.getValue (); } - - return this; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Value.java b/src/com/bytezone/diskbrowser/visicalc/Value.java index b260157..308d520 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Value.java +++ b/src/com/bytezone/diskbrowser/visicalc/Value.java @@ -7,15 +7,15 @@ interface Value VALUE, ERROR, NA } - public double getValue (); + public double getValue (); // if ValueType == VALUE - public String getText (); + public String getText (); // if ValueType != VALUE public boolean isValueType (ValueType valueType); public ValueType getValueType (); - public Value calculate (); + public void calculate (); - public String getTypeText (); + public String getTypeText (); // Number/Function/Expression etc } \ No newline at end of file