Created
December 23, 2018 21:04
-
-
Save Alouush/b9607647215533393e8022cb2c64455b to your computer and use it in GitHub Desktop.
Android App - Basic calculator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.woplandia.calc; | |
import java.util.HashSet; | |
import java.util.Set; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.TextView; | |
public class Default extends Activity { | |
private TextView result; | |
private String operand; | |
private String operator; | |
private Set<String> numbers; | |
private Set<String> operators; | |
/** Called when the activity is first created. */ | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.main); | |
result = (TextView) findViewById(R.id.result); | |
} | |
/** | |
* Initialization of set of number values. | |
*/ | |
private void initNumbers() { | |
numbers = new HashSet<String>(); | |
for (int i = 0; i < 10; i++) { | |
numbers.add(Integer.toString(i)); | |
} | |
} | |
/** | |
* Initialization of set of operators. | |
*/ | |
private void initOperators() { | |
operators = new HashSet<String>(); | |
String[] ops = { "+", "-", "*", "/" }; | |
for (String operator : ops) { | |
operators.add(operator); | |
} | |
} | |
/** | |
* Button click event handler. | |
* | |
* @param view clicked button | |
* @return void | |
*/ | |
public void handleClick(View view) { | |
Button clicked = (Button) view; | |
String label = clicked.getText().toString(); | |
String display = result.getText().toString(); | |
if (isClear(label)) { | |
result.setText(R.string.result_default); | |
} else if (isNumerical(label)) { | |
if (isDefaultResult(display) || isOperator(display)) { | |
result.setText(label); | |
} else { | |
result.setText(display + label); | |
} | |
} else if (isOperator(label)) { | |
operator = label; | |
operand = display; | |
result.setText(label); | |
} else if (label.equals("=")) { | |
double a, b, c; | |
if (operator == null || operand == null) { | |
return; | |
} | |
try { | |
a = Double.parseDouble(operand); | |
b = Double.parseDouble(display); | |
} | |
catch (Exception e) { | |
System.out.println(e.getMessage()); | |
return; | |
} | |
if (operator.equals("+")) { | |
c = a + b; | |
} else if (operator.equals("-")) { | |
c = a - b; | |
} else if (operator.equals("*")) { | |
c = a * b; | |
} else { | |
c = a / b; | |
} | |
operand = Double.toString(c); | |
result.setText(operand); | |
} | |
} | |
/** | |
* Test if value is the same as clear button's. | |
* | |
* @param value button value | |
* @return true if button is clear button | |
*/ | |
private boolean isClear(String value) { | |
return value.equals(getString(R.string.buttonClear)); | |
} | |
/** | |
* Test if value is operator. | |
* | |
* @param value | |
* button value | |
* @return true if value is operator | |
*/ | |
private boolean isOperator(String value) { | |
if (operators == null) { | |
initOperators(); | |
} | |
return operators.contains(value); | |
} | |
/** | |
* Test if result was modified. | |
* | |
* @param value result value | |
* @return true if result is default | |
*/ | |
private boolean isDefaultResult(String value) { | |
return value.equals(getString(R.string.result_default)); | |
} | |
/** | |
* Test if value is numerical. | |
* | |
* @param value button's value | |
* @return true if value is numerical | |
*/ | |
private boolean isNumerical(String value) { | |
if (numbers == null) { | |
initNumbers(); | |
} | |
return numbers.contains(value); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="fill_parent" | |
android:layout_height="fill_parent" | |
> | |
<TableLayout | |
android:id="@+id/tableLayout1" | |
android:layout_height="fill_parent" | |
android:layout_width="fill_parent"> | |
<TextView | |
android:id="@+id/result" | |
android:layout_height="25pt" | |
android:textSize="14pt" | |
android:padding="4pt" | |
android:gravity="right" | |
android:text="@string/result_default" | |
/> | |
<View | |
android:layout_height="2dip" | |
android:background="#FF909090" /> | |
<TableRow | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:layout_marginTop="5pt" | |
android:id="@+id/tableRow2" | |
android:paddingLeft="4pt" | |
android:paddingRight="4pt"> | |
<Button | |
android:text="@string/buttonSeven" | |
android:textSize="14pt" | |
android:id="@+id/button7" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonEight" | |
android:textSize="14pt" | |
android:id="@+id/button8" | |
android:layout_height="25pt" | |
android:layout_width="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonNine" | |
android:textSize="14pt" | |
android:id="@+id/button9" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonDivide" | |
android:textSize="14pt" | |
android:id="@+id/buttonDivide" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
</TableRow> | |
<TableRow | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:layout_marginTop="1pt" | |
android:id="@+id/tableRow2" | |
android:paddingLeft="4pt" | |
android:paddingRight="4pt"> | |
<Button | |
android:text="@string/buttonFour" | |
android:textSize="14pt" | |
android:id="@+id/button4" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonFive" | |
android:textSize="14pt" | |
android:id="@+id/button5" | |
android:layout_height="25pt" | |
android:layout_width="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonSix" | |
android:textSize="14pt" | |
android:id="@+id/button6" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonMutiply" | |
android:textSize="14pt" | |
android:id="@+id/buttonMultiply" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
</TableRow> | |
<TableRow | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:layout_marginTop="1pt" | |
android:id="@+id/tableRow2" | |
android:paddingLeft="4pt" | |
android:paddingRight="4pt"> | |
<Button | |
android:text="@string/buttonOne" | |
android:textSize="14pt" | |
android:id="@+id/button1" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonTwo" | |
android:textSize="14pt" | |
android:id="@+id/button2" | |
android:layout_height="25pt" | |
android:layout_width="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonThree" | |
android:textSize="14pt" | |
android:id="@+id/button3" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonMinus" | |
android:textSize="14pt" | |
android:id="@+id/buttonMinus" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
</TableRow> | |
<TableRow | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:layout_marginTop="1pt" | |
android:id="@+id/tableRow2" | |
android:paddingLeft="4pt" | |
android:paddingRight="4pt"> | |
<Button | |
android:text="@string/buttonClear" | |
android:textSize="14pt" | |
android:id="@+id/buttonClear" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonZero" | |
android:textSize="14pt" | |
android:id="@+id/button0" | |
android:layout_height="25pt" | |
android:layout_width="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonResult" | |
android:textSize="14pt" | |
android:id="@+id/buttonResult" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
<Button | |
android:text="@string/buttonPlus" | |
android:textSize="14pt" | |
android:id="@+id/buttonPlus" | |
android:layout_width="25pt" | |
android:layout_height="25pt" | |
android:layout_weight="1" | |
android:onClick="handleClick" /> | |
</TableRow> | |
</TableLayout> | |
</LinearLayout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<resources> | |
<string name="hello">Hello World, Default!</string> | |
<string name="app_name">Dummy Calc</string> | |
<string name="result_default">0</string> | |
<string name="buttonPlus">+</string> | |
<string name="buttonMinus">-</string> | |
<string name="buttonMutiply">*</string> | |
<string name="buttonDivide">/</string> | |
<string name="buttonClear">C</string> | |
<string name="buttonResult">=</string> | |
<string name="buttonZero">0</string> | |
<string name="buttonOne">1</string> | |
<string name="buttonTwo">2</string> | |
<string name="buttonThree">3</string> | |
<string name="buttonFour">4</string> | |
<string name="buttonFive">5</string> | |
<string name="buttonSix">6</string> | |
<string name="buttonSeven">7</string> | |
<string name="buttonEight">8</string> | |
<string name="buttonNine">9</string> | |
</resources> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment