In: Computer Science
I need the JAVA code for a 4 function calculator app on andriod studio -
The requirements are the following :
- The only buttons needed are 0-9, *, /, +, -, a clear, and enter button
- Implement the onclicklistener on the main activity
- The calcuator should use order of operations (PEMDAS)
- It should be able to continue from a previous answer (Ex: If you type 2+6 the calculator will display 8. If you then multiple by 2 the current result will simply be multiplied by 2)
- It should read the entire sequence of numbers and operators and save them into a String. The information can be read out of the String using a StringTokenizer. The delimiters will be the operators on the calculator.
- The entire mathematical expression will be displayed on the screen before the equal button is clicked.
- The equation will simply be evaluated in the order that the user types in the numbers rather than the precedence
- If the user enters an equation with invalid syntax, the output should display “error”. The calculator should also display “error” for any mathematical calculations that are impossible.
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("Enter two numbers: ");
// nextDouble() reads the next double from the keyboard
double first = reader.nextDouble();
double second = reader.nextDouble();
System.out.print("Enter an operator (+, -, *, /): ");
char operator = reader.next().charAt(0);
double result;
switch(operator)
{
case '+':
result = first + second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first / second;
break;
// operator doesn't match any case constant (+, -, *, /)
default:
System.out.printf("Error! operator is not correct");
return;
}
System.out.printf("%.1f %c %.1f = %.1f", first, operator, second, result);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:weightSum="100">
<TextView
android:id="@+id/display"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="15"
android:text=""
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/buttonadd"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="+"/>
<Button
android:id="@+id/button7"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="7"/>
<Button
android:id="@+id/button8"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="8"/>
<Button
android:id="@+id/button9"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="9"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/buttonsubtract"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="-"/>
<Button
android:id="@+id/button4"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="4"/>
<Button
android:id="@+id/button5"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="5"/>
<Button
android:id="@+id/button6"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="6"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/buttonmultiply"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="*"/>
<Button
android:id="@+id/button1"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="1"/>
<Button
android:id="@+id/button2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="2"/>
<Button
android:id="@+id/button3"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="3"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/buttondivide"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="/"/>
<Button
android:id="@+id/buttonclear"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="Clear"/>
<Button
android:id="@+id/button0"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="0"/>
<Button
android:id="@+id/buttonequals"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="25"
android:text="="/>
</LinearLayout>
</LinearLayout>
for java
package com.example.10012698.calculatorproject;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button button0, button1, button2, button3, button4, button5, button6,
button7, button8, button9, buttonadd, buttonsubtract, buttonmultiply,
buttondivide, buttonequals, buttonclear;
TextView display;
String displaytext="";
double result;
double x, y;
ArrayList<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button0 = (Button) findViewById(R.id.button0);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
button5 = (Button) findViewById(R.id.button5);
button6 = (Button) findViewById(R.id.button6);
button7 = (Button) findViewById(R.id.button7);
button8 = (Button) findViewById(R.id.button8);
button9 = (Button) findViewById(R.id.button9);
buttonadd = (Button) findViewById(R.id.buttonadd);
buttonsubtract = (Button) findViewById(R.id.buttonsubtract);
buttonmultiply = (Button) findViewById(R.id.buttonmultiply);
buttondivide = (Button) findViewById(R.id.buttondivide);
buttonclear = (Button) findViewById(R.id.buttonclear);
buttonequals = (Button) findViewById(R.id.buttonequals);
display = (TextView) findViewById(R.id.display);
display.setOnClickListener(this);
list = new ArrayList<>();
}
public void onClick(View view)
{
if(!(view.equals(buttonclear)&&!(view.equals(buttonequals))))
{
display.setText(display.getText()+""+((Button)view).getText());
if(displaytext.equals("0"))
{
display.setText(" ");
}
if(view.equals(buttonclear))
{
display.setText(" ");
}
if(view.equals(buttonequals))
{
displaytext= displaytext.substring(0,displaytext.length()-1);
StringTokenizer operators= new StringTokenizer(displaytext, "+-*/",true);
while(operators.hasMoreTokens())
{
list.add(operators.nextToken());
}
for(int j=0; j<list.size()-1; j++)
{
if (list.get(j).equals("*") || list.get(j).equals("/"))
{
x = Double.parseDouble(list.get(j - 1));
y = Double.parseDouble(list.get(j + 1));
if (list.get(j).equals("*"))
{
result+=(x*y);
}
if (list.get(j).equals("/"))
{
result+=(x/y);
}
}
}
for(int k=0;k<list.size()-1;k++)
{
if (list.get(k).equals("+") || list.get(k).equals("-"))
{
x = Double.parseDouble(list.get(k - 1));
y = Double.parseDouble(list.get(k + 1));
if (list.get(k).equals("+"))
{
result+=(x+y);
}
if (list.get(k).equals("-"))
{
result+=(x-y);
}
}
}
}
display.setText(""+result);
}
}
this is the program for java code for calculator