Advanced Calculator Source Code
Download Javaelavatur.jar
Design calculator
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:editable="false"
android:gravity="end"
android:textAlignment="textEnd" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText1"
android:editable="false"
android:gravity="end"
android:textAlignment="textEnd" />
<LinearLayout
android:id="@+id/line5"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText2"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/clear"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText2"
android:layout_weight="2.30"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/clear"
android:textSize="36sp" />
<Button
android:id="@+id/posneg"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num1"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/posneg"
android:textSize="36sp" />
<Button
android:id="@+id/backSpace"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/clear"
android:layout_toEndOf="@+id/clear"
android:layout_toRightOf="@+id/clear"
android:layout_weight="2.08"
android:background="@android:color/white"
android:onClick="onClick"
android:text="←"
android:textSize="36sp" />
<Button
android:id="@+id/divide"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_above="@+id/dot"
android:layout_alignLeft="@+id/minus"
android:layout_alignStart="@+id/minus"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="@string/divide"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@id/line5"
android:orientation="horizontal">
<Button
android:id="@+id/num9"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num8"
android:layout_toEndOf="@+id/num8"
android:layout_toRightOf="@+id/num8"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="9"
android:textSize="36sp" />
<Button
android:id="@+id/num7"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/clear"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="7"
android:textSize="36sp" />
<Button
android:id="@+id/num8"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num7"
android:layout_toEndOf="@+id/num7"
android:layout_toRightOf="@+id/num7"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="8"
android:textSize="36sp" />
<Button
android:id="@+id/multiply"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/dot"
android:layout_alignLeft="@+id/divide"
android:layout_alignStart="@+id/divide"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="*"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout"
android:orientation="horizontal">
<Button
android:id="@+id/num4"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num7"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="4"
android:textSize="36sp" />
<Button
android:id="@+id/num5"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num4"
android:layout_toEndOf="@+id/num4"
android:layout_toRightOf="@+id/num4"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="5"
android:textSize="36sp" />
<Button
android:id="@+id/num6"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/num5"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="6"
android:textSize="36sp" />
<Button
android:id="@+id/minus"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_above="@+id/num3"
android:layout_toEndOf="@+id/num6"
android:layout_toRightOf="@+id/num6"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="-"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout2"
android:orientation="horizontal">
<Button
android:id="@+id/num1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num4"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="1"
android:textSize="36sp" />
<Button
android:id="@+id/num2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num1"
android:layout_alignLeft="@+id/num5"
android:layout_alignStart="@+id/num5"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="2"
android:textSize="36sp" />
<Button
android:id="@+id/num3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num2"
android:layout_toEndOf="@+id/num2"
android:layout_toRightOf="@+id/num2"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="3"
android:textSize="36sp" />
<Button
android:id="@+id/plus"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_above="@+id/num6"
android:layout_toEndOf="@+id/num9"
android:layout_toRightOf="@+id/num9"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="+"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout3"
android:orientation="horizontal">
<Button
android:id="@+id/num0"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/posneg"
android:layout_toEndOf="@+id/posneg"
android:layout_toRightOf="@+id/posneg"
android:layout_weight="16.76"
android:background="@android:color/white"
android:onClick="onClick"
android:text="0"
android:textSize="36sp" />
<Button
android:id="@+id/dot"
android:layout_width="90dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num0"
android:layout_toEndOf="@+id/num0"
android:layout_toRightOf="@+id/num0"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="."
android:textSize="36sp" />
<Button
android:id="@+id/equal"
android:layout_width="90dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/openBracket"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="="
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/line6"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_below="@id/linearLayout4"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/openBracket"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/posneg"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/openBracket"
android:textSize="36sp" />
<Button
android:id="@+id/closeBracket"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/square"
android:layout_toEndOf="@+id/openBracket"
android:layout_toRightOf="@+id/openBracket"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/closeBracket"
android:textSize="36sp" />
<Button
android:id="@+id/sqrt"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/square"
android:layout_alignLeft="@+id/multiply"
android:layout_alignStart="@+id/multiply"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/sqrt"
android:textSize="36sp" />
<Button
android:id="@+id/square"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/num0"
android:layout_toEndOf="@+id/num0"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/square"
android:textSize="36sp" />
</LinearLayout>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:editable="false"
android:gravity="end"
android:textAlignment="textEnd" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText1"
android:editable="false"
android:gravity="end"
android:textAlignment="textEnd" />
<LinearLayout
android:id="@+id/line5"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText2"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/clear"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/editText2"
android:layout_weight="2.30"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/clear"
android:textSize="36sp" />
<Button
android:id="@+id/posneg"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num1"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/posneg"
android:textSize="36sp" />
<Button
android:id="@+id/backSpace"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/clear"
android:layout_toEndOf="@+id/clear"
android:layout_toRightOf="@+id/clear"
android:layout_weight="2.08"
android:background="@android:color/white"
android:onClick="onClick"
android:text="←"
android:textSize="36sp" />
<Button
android:id="@+id/divide"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_above="@+id/dot"
android:layout_alignLeft="@+id/minus"
android:layout_alignStart="@+id/minus"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="@string/divide"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@id/line5"
android:orientation="horizontal">
<Button
android:id="@+id/num9"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num8"
android:layout_toEndOf="@+id/num8"
android:layout_toRightOf="@+id/num8"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="9"
android:textSize="36sp" />
<Button
android:id="@+id/num7"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/clear"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="7"
android:textSize="36sp" />
<Button
android:id="@+id/num8"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num7"
android:layout_toEndOf="@+id/num7"
android:layout_toRightOf="@+id/num7"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="8"
android:textSize="36sp" />
<Button
android:id="@+id/multiply"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/dot"
android:layout_alignLeft="@+id/divide"
android:layout_alignStart="@+id/divide"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="*"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout"
android:orientation="horizontal">
<Button
android:id="@+id/num4"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num7"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="4"
android:textSize="36sp" />
<Button
android:id="@+id/num5"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num4"
android:layout_toEndOf="@+id/num4"
android:layout_toRightOf="@+id/num4"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="5"
android:textSize="36sp" />
<Button
android:id="@+id/num6"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/num5"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="6"
android:textSize="36sp" />
<Button
android:id="@+id/minus"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_above="@+id/num3"
android:layout_toEndOf="@+id/num6"
android:layout_toRightOf="@+id/num6"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="-"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout2"
android:orientation="horizontal">
<Button
android:id="@+id/num1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/num4"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="1"
android:textSize="36sp" />
<Button
android:id="@+id/num2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num1"
android:layout_alignLeft="@+id/num5"
android:layout_alignStart="@+id/num5"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="2"
android:textSize="36sp" />
<Button
android:id="@+id/num3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num2"
android:layout_toEndOf="@+id/num2"
android:layout_toRightOf="@+id/num2"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="3"
android:textSize="36sp" />
<Button
android:id="@+id/plus"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_above="@+id/num6"
android:layout_toEndOf="@+id/num9"
android:layout_toRightOf="@+id/num9"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="+"
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/linearLayout3"
android:orientation="horizontal">
<Button
android:id="@+id/num0"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/posneg"
android:layout_toEndOf="@+id/posneg"
android:layout_toRightOf="@+id/posneg"
android:layout_weight="16.76"
android:background="@android:color/white"
android:onClick="onClick"
android:text="0"
android:textSize="36sp" />
<Button
android:id="@+id/dot"
android:layout_width="90dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/num0"
android:layout_toEndOf="@+id/num0"
android:layout_toRightOf="@+id/num0"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="."
android:textSize="36sp" />
<Button
android:id="@+id/equal"
android:layout_width="90dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/openBracket"
android:layout_weight="1"
android:background="@android:color/holo_orange_dark"
android:onClick="onClick"
android:text="="
android:textSize="36sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/line6"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_below="@id/linearLayout4"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:id="@+id/openBracket"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/posneg"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/openBracket"
android:textSize="36sp" />
<Button
android:id="@+id/closeBracket"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/square"
android:layout_toEndOf="@+id/openBracket"
android:layout_toRightOf="@+id/openBracket"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/closeBracket"
android:textSize="36sp" />
<Button
android:id="@+id/sqrt"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/square"
android:layout_alignLeft="@+id/multiply"
android:layout_alignStart="@+id/multiply"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/sqrt"
android:textSize="36sp" />
<Button
android:id="@+id/square"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/num0"
android:layout_toEndOf="@+id/num0"
android:layout_weight="1"
android:background="@android:color/white"
android:onClick="onClick"
android:text="@string/square"
android:textSize="36sp" />
</LinearLayout>
String Code
<string name="clear">C</string>
<string name="backspace">⌫</string>
<string name="divide">÷</string>
<string name="sqrt">√</string>
<string name="square">x²</string>
<string name="posneg">±</string>
<string name="openBracket">(</string>
<string name="closeBracket">)</string>
<string name="clear">C</string>
<string name="backspace">⌫</string>
<string name="divide">÷</string>
<string name="sqrt">√</string>
<string name="square">x²</string>
<string name="posneg">±</string>
<string name="openBracket">(</string>
<string name="closeBracket">)</string>
Compile Library
compile files('libs/javaluator-3.0.1.jar')
compile files('libs/javaluator-3.0.1.jar')
Create Java class
ExtendedDoubleEvaluator.java
public class ExtendedDoubleEvaluator extends DoubleEvaluator {
private static final Function SQRT = new Function("sqrt", 1);
private static final Parameters PARAMS;
static {
PARAMS = DoubleEvaluator.getDefaultParameters();
PARAMS.add(SQRT);
}
public ExtendedDoubleEvaluator() {
super(PARAMS);
}
@Override
public Double evaluate(Function function, Iterator<Double> arguments, Object evaluationContext) {
if (function == SQRT) {
return Math.sqrt(arguments.next());
}
else {
return super.evaluate(function, arguments, evaluationContext);
}
}
}
ExtendedDoubleEvaluator.java
public class ExtendedDoubleEvaluator extends DoubleEvaluator {
private static final Function SQRT = new Function("sqrt", 1);
private static final Parameters PARAMS;
static {
PARAMS = DoubleEvaluator.getDefaultParameters();
PARAMS.add(SQRT);
}
public ExtendedDoubleEvaluator() {
super(PARAMS);
}
@Override
public Double evaluate(Function function, Iterator<Double> arguments, Object evaluationContext) {
if (function == SQRT) {
return Math.sqrt(arguments.next());
}
else {
return super.evaluate(function, arguments, evaluationContext);
}
}
}
Main Activity Code:-
public class MainActivity extends AppCompatActivity {
private EditText e1,e2;
private int count=0;
private String expression="";
private String text="";
private Double result=0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText)findViewById(R.id.editText1);
e2=(EditText)findViewById(R.id.editText2);
e2.setText("0");
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.num0:
e2.setText(e2.getText()+"0");
break;
case R.id.num1:
e2.setText(e2.getText()+"1");
break;
case R.id.num2:
e2.setText(e2.getText()+"2");
break;
case R.id.num3:
e2.setText(e2.getText()+"3");
break;
case R.id.num4:
e2.setText(e2.getText()+"4");
break;
case R.id.num5:
e2.setText(e2.getText()+"5");
break;
case R.id.num6:
e2.setText(e2.getText()+"6");
break;
case R.id.num7:
e2.setText(e2.getText()+"7");
break;
case R.id.num8:
e2.setText(e2.getText()+"8");
break;
case R.id.num9:
e2.setText(e2.getText()+"9");
break;
case R.id.dot:
if(count==0 && e2.length()!=0)
{
e2.setText(e2.getText()+".");
count++;
}
break;
case R.id.clear:
e1.setText("");
e2.setText("");
count=0;
expression="";
break;
case R.id.backSpace:
text=e2.getText().toString();
if(text.length()>0)
{
if(text.endsWith("."))
{
count=0;
}
String newText=text.substring(0,text.length()-1);
if(text.endsWith(")"))
{
char []a=text.toCharArray();
int pos=a.length-2;
int counter=1;
for(int i=a.length-2;i>=0;i--)
{
if(a[i]==')')
{
counter++;
}
else if(a[i]=='(')
{
counter--;
}
else if(a[i]=='.')
{
count=0;
}
if(counter==0)
{
pos=i;
break;
}
}
newText=text.substring(0,pos);
}
if(newText.equals("-")||newText.endsWith("sqrt"))
{
newText="";
}
else if(newText.endsWith("^"))
newText=newText.substring(0,newText.length()-1);
e2.setText(newText);
}
break;
case R.id.plus:
operationClicked("+");
break;
case R.id.minus:
operationClicked("-");
break;
case R.id.divide:
operationClicked("/");
break;
case R.id.multiply:
operationClicked("*");
break;
case R.id.sqrt:
if(e2.length()!=0)
{
text=e2.getText().toString();
e2.setText("sqrt(" + text + ")");
}
break;
case R.id.square:
if(e2.length()!=0)
{
text=e2.getText().toString();
e2.setText("("+text+")^2");
}
break;
case R.id.posneg:
if(e2.length()!=0)
{
String s=e2.getText().toString();
char arr[]=s.toCharArray();
if(arr[0]=='-')
e2.setText(s.substring(1,s.length()));
else
e2.setText("-"+s);
}
break;
case R.id.equal:
if(e2.length()!=0)
{
text=e2.getText().toString();
expression=e1.getText().toString()+text;
}
e1.setText("");
if(expression.length()==0)
expression="0.0";
DoubleEvaluator evaluator = new DoubleEvaluator();
try
{
result=new ExtendedDoubleEvaluator().evaluate(expression);
if(!expression.equals("0.0"))
e2.setText(result+"");
}
catch (Exception e)
{
e2.setText("Invalid Expression");
e1.setText("");
expression="";
e.printStackTrace();
}
break;
case R.id.openBracket:
e1.setText(e1.getText()+"(");
break;
case R.id.closeBracket:
e1.setText(e1.getText()+")");
break;
}
}
private void operationClicked(String op)
{
if(e2.length()!=0)
{
String text=e2.getText().toString();
e1.setText(e1.getText() + text+op);
e2.setText("");
count=0;
}
else
{
String text=e1.getText().toString();
if(text.length()>0)
{
String newText=text.substring(0,text.length()-1)+op;
e1.setText(newText);
}
}
}
}
public class MainActivity extends AppCompatActivity {
private EditText e1,e2;
private int count=0;
private String expression="";
private String text="";
private Double result=0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText)findViewById(R.id.editText1);
e2=(EditText)findViewById(R.id.editText2);
e2.setText("0");
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.num0:
e2.setText(e2.getText()+"0");
break;
case R.id.num1:
e2.setText(e2.getText()+"1");
break;
case R.id.num2:
e2.setText(e2.getText()+"2");
break;
case R.id.num3:
e2.setText(e2.getText()+"3");
break;
case R.id.num4:
e2.setText(e2.getText()+"4");
break;
case R.id.num5:
e2.setText(e2.getText()+"5");
break;
case R.id.num6:
e2.setText(e2.getText()+"6");
break;
case R.id.num7:
e2.setText(e2.getText()+"7");
break;
case R.id.num8:
e2.setText(e2.getText()+"8");
break;
case R.id.num9:
e2.setText(e2.getText()+"9");
break;
case R.id.dot:
if(count==0 && e2.length()!=0)
{
e2.setText(e2.getText()+".");
count++;
}
break;
case R.id.clear:
e1.setText("");
e2.setText("");
count=0;
expression="";
break;
case R.id.backSpace:
text=e2.getText().toString();
if(text.length()>0)
{
if(text.endsWith("."))
{
count=0;
}
String newText=text.substring(0,text.length()-1);
if(text.endsWith(")"))
{
char []a=text.toCharArray();
int pos=a.length-2;
int counter=1;
for(int i=a.length-2;i>=0;i--)
{
if(a[i]==')')
{
counter++;
}
else if(a[i]=='(')
{
counter--;
}
else if(a[i]=='.')
{
count=0;
}
if(counter==0)
{
pos=i;
break;
}
}
newText=text.substring(0,pos);
}
if(newText.equals("-")||newText.endsWith("sqrt"))
{
newText="";
}
else if(newText.endsWith("^"))
newText=newText.substring(0,newText.length()-1);
e2.setText(newText);
}
break;
case R.id.plus:
operationClicked("+");
break;
case R.id.minus:
operationClicked("-");
break;
case R.id.divide:
operationClicked("/");
break;
case R.id.multiply:
operationClicked("*");
break;
case R.id.sqrt:
if(e2.length()!=0)
{
text=e2.getText().toString();
e2.setText("sqrt(" + text + ")");
}
break;
case R.id.square:
if(e2.length()!=0)
{
text=e2.getText().toString();
e2.setText("("+text+")^2");
}
break;
case R.id.posneg:
if(e2.length()!=0)
{
String s=e2.getText().toString();
char arr[]=s.toCharArray();
if(arr[0]=='-')
e2.setText(s.substring(1,s.length()));
else
e2.setText("-"+s);
}
break;
case R.id.equal:
if(e2.length()!=0)
{
text=e2.getText().toString();
expression=e1.getText().toString()+text;
}
e1.setText("");
if(expression.length()==0)
expression="0.0";
DoubleEvaluator evaluator = new DoubleEvaluator();
try
{
result=new ExtendedDoubleEvaluator().evaluate(expression);
if(!expression.equals("0.0"))
e2.setText(result+"");
}
catch (Exception e)
{
e2.setText("Invalid Expression");
e1.setText("");
expression="";
e.printStackTrace();
}
break;
case R.id.openBracket:
e1.setText(e1.getText()+"(");
break;
case R.id.closeBracket:
e1.setText(e1.getText()+")");
break;
}
}
private void operationClicked(String op)
{
if(e2.length()!=0)
{
String text=e2.getText().toString();
e1.setText(e1.getText() + text+op);
e2.setText("");
count=0;
}
else
{
String text=e1.getText().toString();
if(text.length()>0)
{
String newText=text.substring(0,text.length()-1)+op;
e1.setText(newText);
}
}
}
}