From fa6254a350edc71f12f5808b99fec84bb4ead087 Mon Sep 17 00:00:00 2001 From: Advay Date: Tue, 8 Oct 2019 13:29:17 +0530 Subject: [PATCH 1/2] Expression Evalutaion added --- .../calci/ExampleInstrumentedTest.java | 6 +- .../com/exuberant/calci/HomeActivity.java | 51 ++------ .../exuberant/calci/utility/Expression.java | 111 ++++++++++++++++++ .../main/res/layout/content_number_board.xml | 2 +- 4 files changed, 126 insertions(+), 44 deletions(-) create mode 100644 app/src/main/java/com/exuberant/calci/utility/Expression.java diff --git a/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java index b74f55e..5946297 100644 --- a/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java @@ -3,12 +3,14 @@ import android.content.Context; import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; + +//import androidx.test.runner.AndroidJUnit4; /** * Instrumented test, which will execute on an Android device. diff --git a/app/src/main/java/com/exuberant/calci/HomeActivity.java b/app/src/main/java/com/exuberant/calci/HomeActivity.java index 82471e3..699c765 100644 --- a/app/src/main/java/com/exuberant/calci/HomeActivity.java +++ b/app/src/main/java/com/exuberant/calci/HomeActivity.java @@ -7,11 +7,12 @@ import android.widget.TextView; import android.widget.Toast; +import com.exuberant.calci.utility.Expression; import com.google.android.material.button.MaterialButton; public class HomeActivity extends AppCompatActivity implements View.OnClickListener { - private String currentNumber = "", totalCalculation = ""; + private String currentEquation = "", totalCalculation = ""; private TextView totalCalculationTextView, currentAnswerTextView; @Override @@ -46,67 +47,35 @@ public void onClick(View view) { MaterialButton button = (MaterialButton) view; int id = button.getId(); switch (id){ - //Handling all operators - case R.id.btn_addition : - case R.id.btn_division : - case R.id.btn_multiplication : - case R.id.btn_subtraction : - handleOperatorClick(button.getText().toString()); - break; - //Handling clear button case R.id.btn_clear: - currentNumber = ""; + currentEquation = ""; totalCalculation = ""; break; //Handle calculation case R.id.btn_equals: - totalCalculation += currentNumber; + //totalCalculation += currentNumber; calculateAnswer(); break; - //Handle other numerical button clicks + //Handle other button clicks default: - currentNumber += button.getText().toString(); + currentEquation += button.getText().toString(); } updateDisplay(); } private void updateDisplay(){ totalCalculationTextView.setText(totalCalculation); - currentAnswerTextView.setText(currentNumber); - } - - private void handleOperatorClick(String operator){ - if (!(currentNumber.equals("") || currentNumber.length() == 0)) { - totalCalculation += currentNumber + operator; - currentNumber = ""; - } else { - totalCalculation = totalCalculation.substring(0, totalCalculation.length() - 1); - totalCalculation += operator; - } - } - - private double add(double a, double b){ - return a + b; - } - - private double sub(double a, double b){ - return a - b; - } - - private double mul(double a, double b){ - return a * b; - } - - private double div(double a, double b){ - return a / b; + currentAnswerTextView.setText(currentEquation); } private void calculateAnswer(){ //Use totalCalculation string to get final answer and display it - double answer = 0.0; + double answer = Expression.evaluateExpression(currentEquation); + totalCalculation = currentEquation; + currentEquation = String.valueOf(answer); updateDisplay(); } } diff --git a/app/src/main/java/com/exuberant/calci/utility/Expression.java b/app/src/main/java/com/exuberant/calci/utility/Expression.java new file mode 100644 index 0000000..0fd3060 --- /dev/null +++ b/app/src/main/java/com/exuberant/calci/utility/Expression.java @@ -0,0 +1,111 @@ +package com.exuberant.calci.utility; + +import java.util.Stack; + +public class Expression { + + public static double evaluateExpression(String expression) { + expression = infixToPostfix(expression); + String[] inputs = expression.split(" "); + + Stack stack = new Stack<>(); + + for(int i=0; i stack = new Stack<>(); + + for(int i=0; i Date: Tue, 8 Oct 2019 13:35:13 +0530 Subject: [PATCH 2/2] Test unit Updated --- .../java/com/exuberant/calci/ExampleInstrumentedTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java index 5946297..07ecb94 100644 --- a/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/exuberant/calci/ExampleInstrumentedTest.java @@ -3,7 +3,7 @@ import android.content.Context; import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.runner.AndroidJUnit4; +import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith;