Alfredo Castillo 6 年前
父节点
当前提交
1b246ea28e
共有 5 个文件被更改,包括 271 次插入147 次删除
  1. 6
    1
      Calculator.java
  2. 49
    1
      CalculatorTest.java
  3. 207
    144
      Console.java
  4. 1
    1
      NumericInputParser.java
  5. 8
    0
      __SHELL16.java

+ 6
- 1
Calculator.java 查看文件

4
     // instance variables - replace the example below with your own
4
     // instance variables - replace the example below with your own
5
     private double displayValue;
5
     private double displayValue;
6
     private double memoryValue;
6
     private double memoryValue;
7
+<<<<<<< HEAD
7
 
8
 
8
     //private CoreFeatures core;
9
     //private CoreFeatures core;
9
     //private ScientificFeatures science;
10
     //private ScientificFeatures science;
10
     //private BonusFeatures bonus;
11
     //private BonusFeatures bonus;
12
+=======
13
+    private boolean err;
14
+>>>>>>> 85cb6e118e199051f7fc22d59044b58cdf7dcf01
11
 
15
 
12
     /**
16
     /**
13
      * Constructor for objects of class Calculator
17
      * Constructor for objects of class Calculator
16
     {
20
     {
17
         displayValue = 0;
21
         displayValue = 0;
18
         memoryValue = 0;
22
         memoryValue = 0;
23
+        err = false;
19
     }
24
     }
20
 
25
 
21
     //Memory set
26
     //Memory set
37
     //Clear and retrieve display value
42
     //Clear and retrieve display value
38
     public double clear(){
43
     public double clear(){
39
         displayValue = 0;
44
         displayValue = 0;
45
+        err = false;
40
         return displayValue;
46
         return displayValue;
41
     }
47
     }
42
 
48
 
148
     displayValue = Math.E;
154
     displayValue = Math.E;
149
     return Math.E;
155
     return Math.E;
150
     }
156
     }
151
-    
152
 
157
 
153
 }
158
 }

+ 49
- 1
CalculatorTest.java 查看文件

25
     }
25
     }
26
    @Test
26
    @Test
27
     public void subtractionTest(){
27
     public void subtractionTest(){
28
+        //:Given
29
+        Double expected = Double.valueOf(2-1);
30
+        //:When
31
+        Calculator c = new Calculator();
32
+        Double actual = c.subtract(2, 1);
33
+        //Then
34
+        Assert.assertEquals(expected, actual);
28
     }
35
     }
29
    @Test
36
    @Test
30
    public void mutliplicationTest(){
37
    public void mutliplicationTest(){
38
+       //:Given
39
+       Double expected = Double.valueOf(2*3);
40
+       //:When
41
+       Calculator c = new Calculator();
42
+       Double actual = c.multiply(2, 3);
43
+       //:Then
44
+       Assert.assertEquals(expected, actual);
31
     }
45
     }
32
    @Test
46
    @Test
33
-   public void divisiionTest(){
47
+   public void divisionTest(){
48
+       //:Given
49
+       Double expected = Double.valueOf(4/3);
50
+       //:When
51
+       Calculator c = new Calculator();
52
+       Double actual = c.divide(4,3);
53
+       //:Then
54
+       Assert.assertEquals(expected, actual);
55
+    }
56
+   @Test
57
+   public void powTest(){
58
+       //:Given
59
+       Double expected = Double.valueOf(9);
60
+       //:When
61
+       Calculator c = new Calculator();
62
+       Double actual = c.pow(3,2);
63
+       //:Then
64
+       Assert.assertEquals(expected, actual);
65
+    }
66
+   @Test
67
+    public void squareTest(){
68
+        //:Given
69
+        Double expected = Double.valueOf(225);
70
+        //:When
71
+        Calculator c = new Calculator();
72
+        Double actual = c.square(15);
73
+        //:Then
74
+        Assert.assertEquals(expected, actual);
34
     }
75
     }
35
    @Test
76
    @Test
36
    public void sqrtTest(){
77
    public void sqrtTest(){
78
+       //:Given
79
+       Double expected = Double.valueOf(Math.sqrt(4));
80
+       //:When
81
+       Calculator c = new Calculator();
82
+       Double actual = c.squareRoot(4);
83
+       //:Then
84
+       Assert.assertEquals(expected, actual);
37
     }
85
     }
38
 }
86
 }

+ 207
- 144
Console.java 查看文件

1
- 
2
 
1
 
3
 import java.util.Scanner;
2
 import java.util.Scanner;
4
-
5
 /**
3
 /**
6
  * Created by leon on 2/9/18.
4
  * Created by leon on 2/9/18.
7
  * 
5
  * 
14
  * 
12
  * 
15
  */
13
  */
16
 public class Console {
14
 public class Console {
17
-    
15
+
18
     private Calculator calc;
16
     private Calculator calc;
19
     private NumericInputParser parse;
17
     private NumericInputParser parse;
20
-    
18
+
21
     public Console(){
19
     public Console(){
22
         calc = new Calculator();
20
         calc = new Calculator();
23
         parse = new NumericInputParser();
21
         parse = new NumericInputParser();
24
     }
22
     }
25
-    
26
-    
23
+
27
     public void runCommandLoop() 
24
     public void runCommandLoop() 
28
     {
25
     {
29
         Scanner input = new Scanner(System.in);
26
         Scanner input = new Scanner(System.in);
30
-        Calculator calc = new Calculator();
31
         println("Welcome to this calculator!");
27
         println("Welcome to this calculator!");
32
         println("For a user guide, enter '?'");
28
         println("For a user guide, enter '?'");
33
-        
29
+
34
         while (true) {
30
         while (true) {
35
             print("Enter a command: ");
31
             print("Enter a command: ");
36
             String command = input.next();
32
             String command = input.next();
37
-            if (command.equalsIgnoreCase("exit"))  {
38
-                print("Thanks for calculating with us!");
39
-                break;
40
-            }
41
-            else if (command.equalsIgnoreCase("clear")){
42
-                calc.clear();
43
-                println(parse.getFormattedNumber(calc.getDisplayValue()));
44
-            }
45
-            else if (command.equalsIgnoreCase("val")){
46
-                double val = calc.getDisplayValue();
47
-                println("The current value is: %s", parse.getFormattedNumber(val));
48
-            }
49
-            else if (command.equalsIgnoreCase("?")){
50
-                printGuide();
51
-            }
52
-            
53
-            //Core Features
54
-            
55
-            else if (command.equalsIgnoreCase("add"))  {
56
-                double d1 = getDoubleInput("First value: ");
57
-                double d2 = getDoubleInput("Second value: ");
58
-                double result = calc.add(d1, d2);
59
-                println("The sum is: %s", parse.getFormattedNumber(result));
60
-            }
61
-            else if (command.equalsIgnoreCase("subtract")) {
62
-               double d1 = getDoubleInput("First value: ");
63
-               double d2 = getDoubleInput("Second value: ");
64
-               double result = calc.subtract(d1, d2);
65
-               println("The difference is: %s", parse.getFormattedNumber(result));
66
-               
67
-            }
68
-            else if (command.equalsIgnoreCase("multiply")) {
69
-                double d1 = getDoubleInput("Multiplicand: ");
70
-                double d2 = getDoubleInput("Multiplier: ");
71
-                double result = calc.multiply(d1, d2);
72
-                println("The product is: %s", parse.getFormattedNumber(result));
73
-            }
74
-            else if (command.equalsIgnoreCase("divide")) {
75
-                double d1 = getDoubleInput("Dividend: ");
76
-                double d2 = getDoubleInput("Divisor: ");
77
-                double result = calc.multiply(d1, d2);
78
-                println("The quotient is: %s", parse.getFormattedNumber(result));
79
-            }
80
-            else if (command.equalsIgnoreCase("square"))  {
81
-                double d = getDoubleInput("Value: ");
82
-                double result = calc.square(d);
83
-                println("The square is: %s", parse.getFormattedNumber(result));
84
-                
85
-            }
86
-            else if (command.equalsIgnoreCase("pow")) {
87
-                double b = getDoubleInput("Base: ");
88
-                int e = getIntegerInput("Exponent: ");
89
-                double result = calc.pow(b, e);
90
-                println("The exponentiation is: %s", parse.getFormattedNumber(result));
91
-            }
92
-            else if (command.equalsIgnoreCase("sqrt")) {
93
-                double d = getDoubleInput("Value: ");
94
-                double result = calc.squareRoot(d);
95
-                println("The square root is: %s", parse.getFormattedNumber(result));
96
-                
97
-            }
98
-            else if (command.equalsIgnoreCase("inverse")) {
99
-                double d = getDoubleInput("Value: ");
100
-                double result = calc.inverse(d);
101
-                println("The inverse is: %s", result);
102
-            }
103
-            
104
-            //trig functions
105
-            else if (command.equalsIgnoreCase("sin")) {
106
-                double d = getDoubleInput("Value: ");
107
-                //call the sin method on calc and display
108
-                double result = calc.sin(d);
109
-                println("The sin is: %s", parse.getFormattedAngle(result));
110
-                
111
-            }
112
-            else if (command.equalsIgnoreCase("cos")) {
113
-                double d = getDoubleInput("Value: ");
114
-                //call the sin method on calc and display
115
-                double result = calc.cos(d);
116
-                println("The cos is: %s", parse.getFormattedAngle(result));
117
-                
118
-            }
119
-            else if (command.equalsIgnoreCase("tan")) {
120
-                double d = getDoubleInput("Value: ");
121
-                //call the tan method on calc and display
122
-                double result = calc.tan(d);
123
-                println("The tan is: %s", parse.getFormattedAngle(result));
124
-                
125
-            }
126
-            
127
-            //display mode changes
128
-            else if (command.equalsIgnoreCase("hex") ||
129
-                     command.equalsIgnoreCase("oct") ||
130
-                     command.equalsIgnoreCase("dec") ||
131
-                     command.equalsIgnoreCase("bin") ){
132
-                String displayMode = parse.switchDisplayMode(command);
133
-                println("Display mode changed to %s", displayMode);
134
-            }
135
-            else if (command.equalsIgnoreCase("display")) {
136
-                String displayMode = parse.switchDisplayMode();
137
-                println("Display mode changed to %s", displayMode);
138
-            }
139
-            
140
-            //trig units mode changes
141
-            else if (command.equalsIgnoreCase("rad") ||
142
-                     command.equalsIgnoreCase("deg")) {
143
-                String trigUnitsMode = parse.switchUnitsMode(command);
144
-                println("Trig units changed to %s", trigUnitsMode);
145
-            }
146
-            else if (command.equalsIgnoreCase("trig")) {
147
-                String trigUnitsMode = parse.switchUnitsMode();
148
-                println("Trig units changed to %s", trigUnitsMode);
149
-            }
150
-            
151
-            //memory features
152
-            else if (command.equalsIgnoreCase("M+")) {
153
-                //add the display value to memory
154
-                double mem = calc.memSet();
155
-                println("Memory value set to: %s", parse.getFormattedNumber(mem));
156
-            }
157
-            else if (command.equalsIgnoreCase("MC")) {
158
-                //clear the memory
159
-                double mem = calc.memClear();
160
-                println("Memory cleared.\nMemory value set to: %s", parse.getFormattedNumber(mem));
161
-            }
162
-            else if (command.equalsIgnoreCase("MRC")) {
163
-                double mem = calc.mrc();
164
-                
33
+
34
+            try {
35
+                if (command.equalsIgnoreCase("exit"))  {
36
+                    print("Thanks for calculating with us!");
37
+                    break;
38
+                }
39
+                else if (command.equalsIgnoreCase("clear")){
40
+                    calc.clear();
41
+                    println(parse.getFormattedNumber(calc.getDisplayValue()));
42
+                }
43
+                else if (command.equalsIgnoreCase("val")){
44
+                    double val = calc.getDisplayValue();
45
+                    println("The current value is: %s", parse.getFormattedNumber(val));
46
+                }
47
+                else if (command.equalsIgnoreCase("?")){
48
+                    printGuide();
49
+                }
50
+
51
+                //Core Features
52
+
53
+                else if (command.equalsIgnoreCase("add"))  {
54
+                    double d1 = getDoubleInput("First value: ");
55
+                    double d2 = getDoubleInput("Second value: ");
56
+                    double result = calc.add(d1, d2);
57
+                    println("The sum is: %s", parse.getFormattedNumber(result));
58
+                }
59
+                else if (command.equalsIgnoreCase("sub")) {
60
+                    double d1 = getDoubleInput("First value: ");
61
+                    double d2 = getDoubleInput("Second value: ");
62
+                    double result = calc.subtract(d1, d2);
63
+                    println("The difference is: %s", parse.getFormattedNumber(result));
64
+
65
+                }
66
+                else if (command.equalsIgnoreCase("mult")) {
67
+                    double d1 = getDoubleInput("Multiplicand: ");
68
+                    double d2 = getDoubleInput("Multiplier: ");
69
+                    double result = calc.multiply(d1, d2);
70
+                    println("The product is: %s", parse.getFormattedNumber(result));
71
+                }
72
+                else if (command.equalsIgnoreCase("div")) {
73
+                    double d1 = getDoubleInput("Dividend: ");
74
+                    double d2 = getDoubleInput("Divisor: ");
75
+                    if (d2 == 0){
76
+                        errMessage();
77
+                    }
78
+                    else { 
79
+                        double result = calc.divide(d1, d2);
80
+                        println("The quotient is: %s", parse.getFormattedNumber(result));
81
+                    }   
82
+                }
83
+                else if (command.equalsIgnoreCase("sq"))  {
84
+                    double d = getDoubleInput("Value: ");
85
+                    double result = calc.square(d);
86
+                    println("The square is: %s", parse.getFormattedNumber(result));
87
+
88
+                }
89
+                else if (command.equalsIgnoreCase("pow")) {
90
+                    double b = getDoubleInput("Base: ");
91
+                    int e = getIntegerInput("Exponent: ");
92
+                    double result = calc.pow(b, e);
93
+                    println("The exponentiation is: %s", parse.getFormattedNumber(result));
94
+                }
95
+                else if (command.equalsIgnoreCase("sqrt")) {
96
+                    double d = getDoubleInput("Value: ");
97
+                    double result = calc.squareRoot(d);
98
+                    println("The square root is: %s", parse.getFormattedNumber(result));
99
+
100
+                }
101
+                else if (command.equalsIgnoreCase("inv")) {
102
+                    double d = getDoubleInput("Value: ");
103
+                    if (d == 0){
104
+                        errMessage();
105
+                    }
106
+                    else {
107
+                        double result = calc.inverse(d);
108
+                        println("The inverse is: %s", result);
109
+                    }
110
+                }
111
+
112
+                //trig functions
113
+                else if (command.equalsIgnoreCase("sin")) {
114
+                    double d = getDoubleInput("Value: ");
115
+                    //call the sin method on calc and display
116
+                    double result = calc.sin(d);
117
+                    println("The sin is: %s", parse.getFormattedAngle(result));
118
+
119
+                }
120
+                else if (command.equalsIgnoreCase("cos")) {
121
+                    double d = getDoubleInput("Value: ");
122
+                    //call the sin method on calc and display
123
+                    double result = calc.cos(d);
124
+                    println("The cos is: %s", parse.getFormattedAngle(result));
125
+
126
+                }
127
+                else if (command.equalsIgnoreCase("tan")) {
128
+                    double d = getDoubleInput("Value: ");
129
+                    //call the tan method on calc and display
130
+                    double result = calc.tan(d);
131
+                    println("The tan is: %s", parse.getFormattedAngle(result));
132
+
133
+                }
134
+                else if (command.equalsIgnoreCase("cot")) {
135
+                    double d = getDoubleInput("Value: ");
136
+                    double result = calc.inverseTan(d);
137
+                    println("The cot is: %s", parse.getFormattedAngle(result));
138
+
139
+                }
140
+                else if (command.equalsIgnoreCase("csc")){
141
+                    double d = getDoubleInput("Value: ");
142
+                    double result = calc.inverseSin(d);
143
+                    println("The csc is: %s", parse.getFormattedAngle(result));
144
+                }
145
+                else if (command.equalsIgnoreCase("sec")){
146
+                    double d = getDoubleInput("Value: ");
147
+                    double result = calc.inverseCos(d);
148
+                    println("The sec is: %s", parse.getFormattedAngle(result));
149
+                }
150
+
151
+                //Bonus Functions
152
+                else if (command.equalsIgnoreCase("log")){
153
+                    double d = getDoubleInput("Value: ");
154
+                    double result = calc.log(d);
155
+                    println("The log is: %s", parse.getFormattedNumber(result));
156
+                }
157
+                else if (command.equalsIgnoreCase("antilog")){
158
+                    double d = getDoubleInput("Value: ");
159
+                    double result = calc.inverseLog(d);
160
+                    println("The inverse log (base 10) is: %s", parse.getFormattedNumber(result));
161
+                }
162
+                else if (command.equalsIgnoreCase("antiln")){
163
+                    double d = getDoubleInput("Value: ");
164
+                    double result = calc.inverseLn(d);
165
+                    println("The inverse natural log is: %s", parse.getFormattedNumber(result));
166
+                }
167
+                else if (command.equalsIgnoreCase("pi")){
168
+                    println("The current value is now: %s", parse.getFormattedNumber(calc.displayPi()));
169
+                }
170
+                else if (command.equalsIgnoreCase("e")){
171
+                    println("The current value is now: %s", parse.getFormattedNumber(calc.displayE()));
172
+                }
173
+                //display mode changes
174
+                else if (command.equalsIgnoreCase("hex") ||
175
+                command.equalsIgnoreCase("oct") ||
176
+                command.equalsIgnoreCase("dec") ||
177
+                command.equalsIgnoreCase("bin") ){
178
+                    String displayMode = parse.switchDisplayMode(command);
179
+                    println("Display mode changed to %s", displayMode);
180
+                }
181
+                else if (command.equalsIgnoreCase("display")) {
182
+                    String displayMode = parse.switchDisplayMode();
183
+                    println("Display mode changed to %s", displayMode);
184
+                }
185
+
186
+                //trig units mode changes
187
+                else if (command.equalsIgnoreCase("rad") ||
188
+                command.equalsIgnoreCase("deg")) {
189
+                    String trigUnitsMode = parse.switchUnitsMode(command);
190
+                    println("Trig units changed to %s", trigUnitsMode);
191
+                }
192
+                else if (command.equalsIgnoreCase("trig")) {
193
+                    String trigUnitsMode = parse.switchUnitsMode();
194
+                    println("Trig units changed to %s", trigUnitsMode);
195
+                }
196
+
197
+                //memory features
198
+                else if (command.equalsIgnoreCase("M+")) {
199
+                    //add the display value to memory
200
+                    double mem = calc.memSet();
201
+                    println("Memory value set to: %s", parse.getFormattedNumber(mem));
202
+                }
203
+                else if (command.equalsIgnoreCase("MC")) {
204
+                    //clear the memory
205
+                    double mem = calc.memClear();
206
+                    println("Memory cleared.\nMemory value set to: %s", parse.getFormattedNumber(mem));
207
+                }
208
+                else if (command.equalsIgnoreCase("MRC")) {
209
+                    double mem = calc.mrc();
210
+
211
+                }
212
+
213
+                else {
214
+                    System.out.println("Invalid input. Enter '?' for a user guide");
215
+                    System.out.println("Enter 'exit' to quit");
216
+                }
165
             }
217
             }
166
-            
167
-            
168
-            else {
169
-                System.out.println("Invalid input. Enter '?' for a user guide");
170
-                System.out.println("Enter 'exit' to quit");
218
+            catch (ArithmeticException e) {
219
+                errMessage();
171
             }
220
             }
172
         }
221
         }
173
 
222
 
174
     }
223
     }
175
-    
224
+
176
     public static void print(String output, Object... args) {
225
     public static void print(String output, Object... args) {
177
         System.out.printf(output, args);
226
         System.out.printf(output, args);
178
     }
227
     }
228
+
179
     public static void println(String output, Object... args) {
229
     public static void println(String output, Object... args) {
180
         print(output + "\n", args);
230
         print(output + "\n", args);
181
     }
231
     }
182
-    
232
+
183
     public String getStringInput(String prompt) {
233
     public String getStringInput(String prompt) {
184
         Scanner s = new Scanner(System.in);
234
         Scanner s = new Scanner(System.in);
185
         print(prompt);
235
         print(prompt);
186
         return s.nextLine();
236
         return s.nextLine();
187
     }
237
     }
238
+
188
     public Integer getIntegerInput(String prompt) {
239
     public Integer getIntegerInput(String prompt) {
189
         Scanner s = new Scanner(System.in);
240
         Scanner s = new Scanner(System.in);
190
         print(prompt);
241
         print(prompt);
211
         return i;
262
         return i;
212
 
263
 
213
     }
264
     }
265
+
214
     public Double getDoubleInput(String prompt) {
266
     public Double getDoubleInput(String prompt) {
215
         Scanner s = new Scanner(System.in);
267
         Scanner s = new Scanner(System.in);
216
         print(prompt);
268
         print(prompt);
232
                     println("Current display mode is: " + parse.getDisplayMode());
284
                     println("Current display mode is: " + parse.getDisplayMode());
233
                 }
285
                 }
234
             }
286
             }
235
-        
287
+
236
         }
288
         }
237
         return d;
289
         return d;
238
     }
290
     }
291
+
292
+    private void errMessage(){
293
+        while(true){
294
+            String clear = getStringInput("ERR\n");
295
+            if (clear.equalsIgnoreCase("clear")){
296
+                break;
297
+            }   
298
+        }
299
+    }
300
+
239
     public double getAngleInput(String prompt) {
301
     public double getAngleInput(String prompt) {
240
         Scanner s = new Scanner(System.in);
302
         Scanner s = new Scanner(System.in);
241
         print(prompt);
303
         print(prompt);
242
         return parse.getAngle(s.nextLine());
304
         return parse.getAngle(s.nextLine());
243
     }
305
     }
306
+
244
     public void printGuide(){
307
     public void printGuide(){
245
         println("Guide Under Construction");
308
         println("Guide Under Construction");
246
     }
309
     }

+ 1
- 1
NumericInputParser.java 查看文件

66
         double val = 0;
66
         double val = 0;
67
         switch (displayMode) {
67
         switch (displayMode) {
68
             case "dec" :
68
             case "dec" :
69
-                val = Integer.parseInt(input, 10);
69
+                val = Double.parseDouble(input);
70
                 break;
70
                 break;
71
             case "bin" :
71
             case "bin" :
72
                 val = Integer.parseInt(input, 2);
72
                 val = Integer.parseInt(input, 2);

+ 8
- 0
__SHELL16.java 查看文件

1
+
2
+public class __SHELL16 extends bluej.runtime.Shell {
3
+public static void run() throws Throwable {
4
+
5
+java.lang.String[] __bluej_param0 = { };
6
+MainApplication.main(__bluej_param0);
7
+
8
+}}