From 6caff8889714a97ed2d0be563e6ec80513bf132a Mon Sep 17 00:00:00 2001 From: jorianCheong Date: Tue, 9 Aug 2022 00:31:39 +0800 Subject: [PATCH 1/3] Adding inverse sine in class "Calculator" Adding new constant "inverseSin" into class "MonoOperatorModes". Adding new if statement "if (newMode == MonoOperatorModes.inverseSin)" into class "calculateMono" --- .classpath | 11 +++++++++++ .gitignore | 1 + .project | 17 +++++++++++++++++ src/simplejavacalculator/Calculator.java | 5 ++++- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 .classpath create mode 100644 .project diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..539dba0 --- /dev/null +++ b/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index b0cbf6e..85e6efb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ # Mac OS System .DS_Store* ._* +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..02992da --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Simple-Java-Calculator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/src/simplejavacalculator/Calculator.java b/src/simplejavacalculator/Calculator.java index 18ad91c..5856b54 100644 --- a/src/simplejavacalculator/Calculator.java +++ b/src/simplejavacalculator/Calculator.java @@ -23,7 +23,7 @@ public enum BiOperatorModes { } public enum MonoOperatorModes { - square, squareRoot, oneDividedBy, cos, sin, tan ,log , rate, abs + square, squareRoot, oneDividedBy, cos, sin, tan, inverseSin, log, rate, abs } private Double num1, num2; @@ -118,6 +118,9 @@ public Double calculateMono(MonoOperatorModes newMode, Double num) { if (newMode == MonoOperatorModes.abs){ return Math.abs(num); } + if (newMode == MonoOperatorModes.inverseSin){ + return Math.toDegrees(Math.asin(num)); + } // never reach throw new Error(); From ea399b0f7aabfd89ed32736afb395d3a807a5b14 Mon Sep 17 00:00:00 2001 From: jorianCheong Date: Tue, 9 Aug 2022 00:42:10 +0800 Subject: [PATCH 2/3] Adding inverse sine button --- src/simplejavacalculator/UI.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/simplejavacalculator/UI.java b/src/simplejavacalculator/UI.java index 8e9cc4a..71a7ab6 100644 --- a/src/simplejavacalculator/UI.java +++ b/src/simplejavacalculator/UI.java @@ -51,7 +51,7 @@ public class UI implements ActionListener { private final JTextArea text; private final JButton but[], butAdd, butMinus, butMultiply, butDivide, butEqual, butCancel, butSquareRoot, butSquare, butOneDividedBy, - butCos, butSin, butTan, butxpowerofy, butlog, butrate, butabs, butBinary; + butCos, butSin, butTan, butxpowerofy, butlog, butrate, butabs, butBinary, butInverseSin; private final Calculator calc; private final String[] buttonValue = {"0", "1", "2", "3", "4", "5", "6", @@ -99,13 +99,14 @@ public UI() throws IOException { butOneDividedBy = new JButton("1/x"); butCos = new JButton("Cos"); butSin = new JButton("Sin"); - butTan = new JButton("Tan"); + butTan = new JButton("Tan"); + butInverseSin = new JButton("Sin^-1"); butxpowerofy = new JButton("x^y"); butlog = new JButton("log10(x)"); butrate = new JButton("x%"); butabs = new JButton("abs(x)"); butCancel = new JButton("C"); - butBinary = new JButton("Bin"); + butBinary = new JButton("Bin"); calc = new Calculator(); @@ -135,6 +136,7 @@ public void init() { butCos.setFont(font); butSin.setFont(font); butTan.setFont(font); + butInverseSin.setFont(font); butxpowerofy.setFont(font); butlog.setFont(font); butrate.setFont(font); @@ -184,6 +186,7 @@ public void init() { panelSub7.add(butCos); panelSub7.add(butSin); panelSub7.add(butTan); + panelSub7.add(butInverseSin); panel.add(panelSub7); panelSub8.add(butlog); @@ -205,6 +208,7 @@ public void init() { butCos.addActionListener(this); butSin.addActionListener(this); butTan.addActionListener(this); + butInverseSin.addActionListener(this); butxpowerofy.addActionListener(this); butlog.addActionListener(this); butrate.addActionListener(this); @@ -280,6 +284,9 @@ public void actionPerformed(ActionEvent e) { if (source == butTan) writer(calc.calculateMono(Calculator.MonoOperatorModes.tan, reader())); + if (source == butInverseSin) + writer(calc.calculateMono(Calculator.MonoOperatorModes.inverseSin, reader())); + if (source == butlog) writer(calc.calculateMono(Calculator.MonoOperatorModes.log, reader())); From 777ba54a9a3ac04133b3a71a11061290a35147c1 Mon Sep 17 00:00:00 2001 From: jorianCheong Date: Tue, 9 Aug 2022 01:16:27 +0800 Subject: [PATCH 3/3] Adding Test Function for inverse sin The outputs of CalculateMonoSinTest(), CalculateMonoCosTest(), and CalculateMonoTanTest() were not matched with the expected answers because of the logic error. The logic error was solved by adding "Math.toDegrees()" Adding CalculateMonoInverseSinTest() to test the inverse sine function --- src/simplejavacalculatorTest/CalculatorTest.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/simplejavacalculatorTest/CalculatorTest.java b/src/simplejavacalculatorTest/CalculatorTest.java index 1ea20f7..8187ca2 100755 --- a/src/simplejavacalculatorTest/CalculatorTest.java +++ b/src/simplejavacalculatorTest/CalculatorTest.java @@ -82,19 +82,25 @@ void CalculateMonoOneDividedByTest() { @Test void CalculateMonoSinTest() { Calculator calculator = new Calculator(); - Assertions.assertEquals(0.5, calculator.calculateMono(Calculator.MonoOperatorModes.sin, java.lang.Math.PI / 6), 0.0000000001); + Assertions.assertEquals(0.5, calculator.calculateMono(Calculator.MonoOperatorModes.sin, Math.toDegrees(java.lang.Math.PI) / 6), 0.0000000001); } @Test void CalculateMonoCosTest() { Calculator calculator = new Calculator(); - Assertions.assertEquals(0.5, calculator.calculateMono(Calculator.MonoOperatorModes.cos, java.lang.Math.PI / 3), 0.0000000001); + Assertions.assertEquals(0.5, calculator.calculateMono(Calculator.MonoOperatorModes.cos, Math.toDegrees(java.lang.Math.PI) / 3), 0.0000000001); } @Test void CalculateMonoTanTest() { Calculator calculator = new Calculator(); - Assertions.assertEquals(1.0, calculator.calculateMono(Calculator.MonoOperatorModes.tan, java.lang.Math.PI / 4), 0.0000000001); + Assertions.assertEquals(1.0, calculator.calculateMono(Calculator.MonoOperatorModes.tan, Math.toDegrees(java.lang.Math.PI) / 4), 0.0000000001); + } + + @Test + void CalculateMonoInverseSinTest() { + Calculator calculator = new Calculator(); + Assertions.assertEquals(90.0, calculator.calculateMono(Calculator.MonoOperatorModes.inverseSin, 1.0), 0.0000000001); } @Test