You are on page 1of 14

Christine Mae T.

Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Layout activity_main (XML File)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="#000000"
android:orientation="vertical">

<TextView
android:id="@+id/inputTextView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_gravity="end"
android:paddingRight="30dp"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:text=""
android:background="#000000"
android:gravity="center_vertical"
android:textAlignment="textEnd"
tools:ignore="RtlCompat" />

<TextView
android:id="@+id/outputTextView"
android:layout_width="match_parent"
android:paddingRight="30dp"
android:layout_height="20dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textColor="#FFA500"
android:text=""
android:textAlignment="textEnd"
android:layout_gravity="end"
android:textSize="45sp"
tools:ignore="RtlCompat" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btnClr"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="C"
android:background="@null"
android:textColor="#FF0000"
android:textSize="30sp"
android:onClick="onClear"
tools:ignore="NestedWeights,OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnPara"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="()"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onPara"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnPower"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="^"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onPower"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnDivide"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="÷"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onDivide"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btnSeven"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="7"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onSeven"
tools:ignore="NestedWeights,OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnEight"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="8"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onEight"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

<Button
android:id="@+id/btnNine"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="9"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onNine"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnMultiply"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="×"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onMultiply"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btnFour"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="4"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:onClick="onFour"
tools:ignore="NestedWeights,OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnFive"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="5"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onFive"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnSix"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="6"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onSix"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnSubtract"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="-"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onSubtract"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

</LinearLayout>
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btnOne"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="1"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onOne"
tools:ignore="NestedWeights,OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnTwo"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="2"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onTwo"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnThree"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="3"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onThree"
tools:ignore="OnClick,UsingOnClickInXml"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnAdd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="+"
android:background="@null"
android:textColor="#FFA500"
android:textSize="30sp"
android:onClick="onAdd"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">

<Button
android:id="@+id/btnZero"
android:layout_width="103dp"
android:layout_height="match_parent"
android:text="0"
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onZero"
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnPoint"
android:layout_width="102dp"
android:layout_height="match_parent"
android:text="."
android:background="@null"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:onClick="onPoint"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
tools:ignore="OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

<Button
android:id="@+id/btnEqual"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="="
android:backgroundTint="#FFA500"
android:textColor="#FFFFFF"
android:textSize="40sp"
android:onClick="onEqual"
tools:ignore="NestedWeights,OnClick,UsingOnClickInXml"
style="?android:attr/buttonBarButtonStyle" />

</LinearLayout>

</LinearLayout>
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

MainActivity (Java File)

package com.example.exer2cionchristine;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class MainActivity extends AppCompatActivity {

TextView inputTV;
TextView outputTV;

String input = "";


String formula = "";
String tempFormula = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTextViews();
}

//Initialize Input
private void initTextViews()
{
inputTV = (TextView)findViewById(R.id.inputTextView);
outputTV = (TextView)findViewById(R.id.outputTextView);
}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
private void setInput(String givenValue)
{
input = input + givenValue;
inputTV.setText(input);
}

//Equal Function
public void onEqual(View view)
{
Double result = null;
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
checkForPowerOf();

try {
result = (double)engine.eval(formula);
} catch (ScriptException e)
{
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}

if(result != null)
outputTV.setText(String.valueOf(result.doubleValue()));

//Power Check Function


private void checkForPowerOf()
{
ArrayList<Integer> indexOfPowers = new ArrayList<>();
for(int i = 0; i < input.length(); i++)
{
if (input.charAt(i) == '^')
indexOfPowers.add(i);
}

formula = input;
tempFormula = input;
for(Integer index: indexOfPowers)
{
changeFormula(index);
}
formula = tempFormula;
}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
//Change Formula
private void changeFormula(Integer index)
{
String numberLeft = "";
String numberRight = "";

for(int i = index + 1; i< input.length(); i++)


{
if(isNumeric(input.charAt(i)))
numberRight = numberRight + input.charAt(i);
else
break;
}

for(int i = index - 1; i >= 0; i--)


{
if(isNumeric(input.charAt(i)))
numberLeft = numberLeft + input.charAt(i);
else
break;
}

String original = numberLeft + "^" + numberRight;


String changed = "Math.pow("+numberLeft+","+numberRight+")";
tempFormula = tempFormula.replace(original,changed);
}

//Check if it is number/integer
private boolean isNumeric(char c)
{
if((c <= '9' && c >= '0') || c == '.')
return true;

return false;
}

public void onClear(View view)


{
inputTV.setText("");
input = "";
outputTV.setText("");
leftBracket = true;
}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
boolean leftBracket = true;

//Parenthesis
public void onPara(View view)
{
if(leftBracket)
{
setInput("(");
leftBracket = false;
}
else
{
setInput(")");
leftBracket = true;
}
}

public void onPower(View view) {


setInput("^");
}

public void onDivide(View view) {


setInput("/");
}

public void onSeven(View view) {


setInput("7");
}

public void onEight(View view) {


setInput("8");
}

public void onNine(View view) {


setInput("9");
}

public void onMultiply(View view) {


setInput("*");
}

public void onFour(View view) {


setInput("4");
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
}

public void onFive(View view) {


setInput("5");
}

public void onSix(View view) {


setInput("6");
}

public void onSubtract(View view) {


setInput("-");
}

public void onOne(View view) {


setInput("1");
}

public void onTwo(View view) {


setInput("2");
}

public void onThree(View view) {


setInput("3");
}

public void onAdd(View view) {


setInput("+");
}

public void onZero(View view) {


setInput("0");
}

public void onPoint(View view) {


setInput(".");
}

}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

Screenshot (Output)

You might also like