0% found this document useful (0 votes)
2 views

code of calculator

The document contains Java code for a simple calculator app using Android's AppCompatActivity, which allows users to perform basic arithmetic operations. It includes a user interface defined in XML with buttons for numbers and operations, and implements functionality to evaluate expressions using the Mozilla Rhino library. The app handles button clicks to update the input and output fields, and evaluates the mathematical expressions entered by the user.

Uploaded by

jaxala3388
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

code of calculator

The document contains Java code for a simple calculator app using Android's AppCompatActivity, which allows users to perform basic arithmetic operations. It includes a user interface defined in XML with buttons for numbers and operations, and implements functionality to evaluate expressions using the Mozilla Rhino library. The app handles button clicks to update the input and output fields, and evaluates the mathematical expressions entered by the user.

Uploaded by

jaxala3388
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Java Code

package calculator_task;

import androidx.appcompat.app.AppCompatActivity;

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

import com.google.android.material.button.MaterialButton;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

TextView first, Second; // Text views to display the output and input expressions
MaterialButton buttonC, buttonBrackOpen, buttonBrackClose;
MaterialButton buttonDivide, buttonMultiply, buttonPlus, buttonMinus,
buttonEquals;
MaterialButton button0, button1, button2, button3, button4, button5, button6,
button7, button8, button9;
MaterialButton buttonAC, buttonDot;

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

first = findViewById(R.id.Output2); // Assign the result text view


Second = findViewById(R.id.Output); // Assign the input expression text view

// Assign IDs and click listeners to operator buttons


assignId(buttonBrackOpen, R.id.Bopen_bracket);
assignId(buttonBrackClose, R.id.Bclose_bracket);
assignId(buttonDivide, R.id.Bdivide);
assignId(buttonMultiply, R.id.Bmultiply);
assignId(buttonPlus, R.id.Bplus);
assignId(buttonMinus, R.id.Bminus);
assignId(buttonEquals, R.id.Bequals);

// Assign IDs and click listeners to numeric buttons


assignId(button0, R.id.B0);
assignId(button1, R.id.B1);
assignId(button2, R.id.B2);
assignId(button3, R.id.B3);
assignId(button4, R.id.B4);
assignId(button5, R.id.B5);
assignId(button6, R.id.B6);
assignId(button7, R.id.B7);
assignId(button8, R.id.B8);
assignId(button9, R.id.B9);
assignId(buttonDot, R.id.Bdot);
assignId(buttonAC, R.id.Bac);
}

// Helper method to assign IDs and click listeners to buttons


void assignId(MaterialButton btn, int id) {
btn = findViewById(id);
btn.setOnClickListener(this);
}

@Override
public void onClick(View view) {
MaterialButton button = (MaterialButton) view;
String buttonText = button.getText().toString();
String calculate = Second.getText().toString();

if (buttonText.equals("AC")) {
// Clear input and output fields
Second.setText("");
first.setText("0");
return;
}
if (buttonText.equals("=")) {
// Copy the current value in the output field to the input field
Second.setText(first.getText());
return;
}
if (buttonText.equals("C")) {
// Remove the last character from the input field (like a backspace)
calculate = calculate.substring(0, calculate.length() - 1);
} else {
// Append the clicked button's text to the input field
calculate = calculate + buttonText;
}
Second.setText(calculate);

// Evaluate the mathematical expression and update the result field


String finalResult = getResult(calculate);

if (!finalResult.equals("Err")) {
// Remove decimal point and trailing zeros if the result is an integer
if (finalResult.endsWith(".0")) {
finalResult = finalResult.replace(".0", "");
}
first.setText(finalResult);
}
}

// Evaluate the mathematical expression using Mozilla Rhino library


String getResult(String data) {
try {
Context context = Context.enter();
context.setOptimizationLevel(-1);
Scriptable scriptable = context.initStandardObjects();
String finalResult = context.evaluateString(scriptable, data,
"Javascript", 1, null).toString();
if (finalResult.endsWith(".0")) {
finalResult = finalResult.replace(".0", "");
}
return finalResult;
} catch (Exception e) {
return "Error";
}
}
}
XML Code
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/Output"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/Output2"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="1dp"
android:textAlignment="textEnd"
android:textColor="@color/black"
android:textSize="45dp" />

<TextView
android:id="@+id/Output2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/buttons_layout"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:text="0"
android:textAlignment="textEnd"
android:textColor="@color/black"
android:textSize="64dp" />

<LinearLayout
android:id="@+id/buttons_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#303F9F"
android:orientation="vertical"
android:paddingVertical="16dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<com.google.android.material.button.MaterialButton
android:id="@+id/Bac"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#00796B"
android:text="AC"
android:textColor="@color/white"
android:textSize="20dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bopen_bracket"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#F57C00"
android:text="("
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bclose_bracket"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#F57C00"
android:text=")"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bdivide"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#E30F0F"
android:text="/"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<com.google.android.material.button.MaterialButton
android:id="@+id/B7"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="7"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B8"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="8"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B9"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="9"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bmultiply"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#E30F0F"
android:text="*"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<com.google.android.material.button.MaterialButton
android:id="@+id/B4"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="4"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B5"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="5"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B6"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="6"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bplus"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#E30F0F"
android:text="+"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<com.google.android.material.button.MaterialButton
android:id="@+id/B1"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="1"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B2"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="2"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/B3"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="3"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bminus"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#E30F0F"
android:text="-"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<com.google.android.material.button.MaterialButton
android:id="@+id/B0"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="0"
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bdot"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:text="."
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

<com.google.android.material.button.MaterialButton
android:id="@+id/Bequals"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="161dp"
android:layout_height="72dp"
android:layout_margin="12dp"
android:backgroundTint="#E32E58"
android:text="="
android:textColor="@color/white"
android:textSize="32dp"
app:cornerRadius="10dp" />

</LinearLayout>

</LinearLayout>

</RelativeLayout>
Screenshot

You might also like