Browse Source

Basic functions work

Added buttons work somewhat
-- 9 -> sqr -> anyNumber -> =
Nick Satinover 5 years ago
parent
commit
a9627c1147

+ 20
- 4
src/main/java/rocks/zipcode/calcskin/CalcEngine.java View File

@@ -6,18 +6,34 @@ public class CalcEngine {
6 6
     }
7 7
 
8 8
     public double add(double v, double v1) {
9
-        return Double.NaN;
9
+        return v + v1;
10 10
     }
11 11
 
12 12
     public double subtract(double v, double v1) {
13
-        return Double.NaN;
13
+        return v - v1;
14 14
     }
15 15
 
16 16
     public double multiply(double v, double v1) {
17
-        return Double.NaN;
17
+        return v * v1;
18 18
     }
19 19
 
20 20
     public double divide(double v, double v1) {
21
-        return Double.NaN;
21
+        return v / v1;
22
+    }
23
+
24
+    public double square(double curNum) {
25
+        return Math.pow(curNum, 2.0D);
26
+    }
27
+
28
+    public double squareRoot(double curNum) {
29
+        return Math.sqrt(curNum);
30
+    }
31
+
32
+    public double exponent(double curNum, double userExponent) {
33
+        return Math.pow(curNum, userExponent);
34
+    }
35
+
36
+    public double invert(double curNum) {
37
+        return 1.0D / curNum;
22 38
     }
23 39
 }

+ 32
- 10
src/main/java/rocks/zipcode/calcskin/CalcSkin.java View File

@@ -24,10 +24,10 @@ public class CalcSkin extends Application {
24 24
         launch(args);
25 25
     }
26 26
     private static final String[][] template = {
27
-            { "7", "8", "9", "/" },
28
-            { "4", "5", "6", "*" },
29
-            { "1", "2", "3", "-" },
30
-            { "0", "c", "=", "+" }
27
+            { "7", "8", "9", "/", "sqr" },
28
+            { "4", "5", "6", "*", "sqRt" },
29
+            { "1", "2", "3", "-", "exp" },
30
+            { "0", "c", "=", "+", "inv" }
31 31
     };
32 32
 
33 33
     private final Map<String, Button> accelerators = new HashMap<>();
@@ -36,7 +36,7 @@ public class CalcSkin extends Application {
36 36
     private DoubleProperty currentValue = new SimpleDoubleProperty();
37 37
     private CalcEngine calcEngine = new CalcEngine();
38 38
 
39
-    private enum Op { NOOP, ADD, SUBTRACT, MULTIPLY, DIVIDE }
39
+    private enum Op { NOOP, ADD, SUBTRACT, MULTIPLY, DIVIDE, SQUARE, SQROOT, EXPON, INVERS }
40 40
 
41 41
     private Op curOp   = Op.NOOP;
42 42
     private Op stackOp = Op.NOOP;
@@ -114,6 +114,8 @@ public class CalcSkin extends Application {
114 114
                 makeClearButton(button);
115 115
             } else if ("=".equals(s)) {
116 116
                 makeEqualsButton(button);
117
+            } else if ("sqr".equals(s)){
118
+                makeEqualsButton(button);
117 119
             }
118 120
         }
119 121
 
@@ -123,10 +125,14 @@ public class CalcSkin extends Application {
123 125
     private ObjectProperty<Op> determineOperand(String s) {
124 126
         final ObjectProperty<Op> triggerOp = new SimpleObjectProperty<>(Op.NOOP);
125 127
         switch (s) {
126
-            case "+": triggerOp.set(Op.ADD);      break;
127
-            case "-": triggerOp.set(Op.SUBTRACT); break;
128
-            case "*": triggerOp.set(Op.MULTIPLY); break;
129
-            case "/": triggerOp.set(Op.DIVIDE);   break;
128
+            case "+":    triggerOp.set(Op.ADD);      break;
129
+            case "-":    triggerOp.set(Op.SUBTRACT); break;
130
+            case "*":    triggerOp.set(Op.MULTIPLY); break;
131
+            case "/":    triggerOp.set(Op.DIVIDE);   break;
132
+            case "sqr":  triggerOp.set(Op.SQUARE);   break;
133
+            case "sqRt": triggerOp.set(Op.SQROOT);   break;
134
+            case "exp" : triggerOp.set(Op.EXPON);    break;
135
+            case "inv" : triggerOp.set(Op.INVERS);   break;
130 136
         }
131 137
         return triggerOp;
132 138
     }
@@ -174,7 +180,17 @@ public class CalcSkin extends Application {
174 180
             }
175 181
         });
176 182
     }
177
-
183
+/*
184
+    private void makeSquareButton(Button button) {
185
+        button.setStyle("-fx-base: mistyrose;");
186
+        button.setOnAction(new EventHandler<ActionEvent>() {
187
+            @Override
188
+            public void handle(ActionEvent actionEvent) {
189
+                currentValue.set(calcEngine.square(currentValue.get()));
190
+            }
191
+        });
192
+    }
193
+*/
178 194
     private void makeEqualsButton(Button button) {
179 195
         button.setStyle("-fx-base: ghostwhite;");
180 196
         button.setOnAction(new EventHandler<ActionEvent>() {
@@ -185,10 +201,16 @@ public class CalcSkin extends Application {
185 201
                     case SUBTRACT: currentValue.set(calcEngine.subtract(previousValue.get(), currentValue.get())); break;
186 202
                     case MULTIPLY: currentValue.set(calcEngine.multiply(previousValue.get(), currentValue.get())); break;
187 203
                     case DIVIDE:   currentValue.set(calcEngine.divide(previousValue.get(), currentValue.get())); break;
204
+                    case SQUARE:   currentValue.set(calcEngine.square(previousValue.get())); break;
205
+                    case SQROOT:   currentValue.set(calcEngine.squareRoot(previousValue.get())); break;
206
+                    case EXPON:    currentValue.set(calcEngine.exponent(previousValue.get(), currentValue.get())); break;
207
+                    case INVERS:   currentValue.set(calcEngine.invert(previousValue.get())); break;
188 208
                 }
189 209
             }
190 210
         });
191 211
     }
212
+
213
+
192 214
 }
193 215
 
194 216