Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Lab-4

AIM:
Develop a native calculator using Android Studio having controls like Button, TextView, EditText for
designing a calculator having basic functionality like Addition, Subtraction, Multiplication, and
Division.

CODE:

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textViewInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_margin="16dp"
android:textSize="24sp"
android:gravity="end"
android:textColor="@android:color/black"
android:text="0"/>

<TextView
android:id="@+id/textViewResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/textViewInput"
android:layout_margin="16dp"
android:textSize="30sp"
android:gravity="end"
android:textColor="@android:color/black"
android:text="0"/>

<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/textViewResult"
android:layout_marginTop="16dp"
android:columnCount="4">

<!-- Row 1 -->


<Button
android:layout_width="0dp"
android:id="@+id/button7"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="7"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button8"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="8"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button9"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="9"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/division"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="/"
android:onClick="onOperatorClick" />

<!-- Row 2 -->


<Button
android:layout_width="0dp"
android:id="@+id/button4"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="4"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button5"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="5"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button6"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="6"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/multiplication"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="*"
android:onClick="onOperatorClick" />

<!-- Row 3 -->


<Button
android:layout_width="0dp"
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="1"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button2"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="2"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/button3"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="3"
android:onClick="onDigitClick" />

<Button
android:layout_width="0dp"
android:id="@+id/subtraction"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="-"
android:onClick="onOperatorClick" />

<!-- Row 4 -->


<Button
android:layout_width="0dp"
android:id="@+id/button0"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="0"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/buttondot"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="."
android:onClick="onDecimalClick" />

<Button
android:layout_width="0dp"
android:id="@+id/addition"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="2"
android:text="+"
android:onClick="onOperatorClick" />

<Button
android:layout_width="0dp"
android:id="@+id/equal"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="="
android:onClick="onEqualClick" />

<!-- Clear and Delete buttons -->


<Button
android:layout_width="0dp"
android:id="@+id/clear"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="2"
android:text="Clear"
android:onClick="onClearClick" />

</GridLayout>

</RelativeLayout>
MainActivity.xml
package com.example.calculator;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {

private TextView resultTextView;


private TextView inputTextView; // New TextView for input
private Button addition, subtraction, multiplication, division, equal, clear;
private Button[] numberButtons = new Button[10];
private double valueOne = Double.NaN, valueTwo;
private final char ADDITION = '+', SUBTRACTION = '-', MULTIPLICATION = '*', DIVISION
= '/';
private char ACTION;

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

setupUIViews();

for (int i = 0; i < 10; i++) {


int finalI = i;
numberButtons[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Append input value to both inputTextView and resultTextView
inputTextView.append(String.valueOf(finalI));
resultTextView.append(String.valueOf(finalI));
}
});
}

addition.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compute();
ACTION = ADDITION;
// Update inputTextView for the action
inputTextView.append(" + ");
resultTextView.setText(null);
}
});
subtraction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compute();
ACTION = SUBTRACTION;
// Update inputTextView for the action
inputTextView.append(" - ");
resultTextView.setText(null);
}
});

multiplication.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compute();
ACTION = MULTIPLICATION;
// Update inputTextView for the action
inputTextView.append(" * ");
resultTextView.setText(null);
}
});

division.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compute();
ACTION = DIVISION;
// Update inputTextView for the action
inputTextView.append(" / ");
resultTextView.setText(null);
}
});

equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compute();
ACTION = '0';
}
});

clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
valueOne = Double.NaN;
valueTwo = Double.NaN;
resultTextView.setText(null);
inputTextView.setText(null);
}
});
}

private void setupUIViews() {


resultTextView = findViewById(R.id.textViewResult);
inputTextView = findViewById(R.id.textViewInput);
addition = findViewById(R.id.addition);
subtraction = findViewById(R.id.subtraction);
multiplication = findViewById(R.id.multiplication);
division = findViewById(R.id.division);
equal = findViewById(R.id.equal);
clear = findViewById(R.id.clear);
// Initialize number buttons
for (int i = 0; i < 10; i++) {
String buttonID = "button" + i;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
numberButtons[i] = findViewById(resID);
}
}

private void compute() {


if (!Double.isNaN(valueOne)) {
valueTwo = Double.parseDouble(resultTextView.getText().toString());
switch (ACTION) {
case ADDITION:
valueOne = valueOne + valueTwo;
break;
case SUBTRACTION:
valueOne = valueOne - valueTwo;
break;
case MULTIPLICATION:
valueOne = valueOne * valueTwo;
break;
case DIVISION:
valueOne = valueOne / valueTwo;
break;
}
} else {
try {
valueOne = Double.parseDouble(resultTextView.getText().toString());
} catch (Exception e) {
}
}
resultTextView.setText(String.valueOf(valueOne));
}
}
Output:

Fig 4.1 : Calculator

You might also like