前言:這個項目是還存在很多bug,基本上可以實作16位以下的加減乘除求餘
整個項目的完整代碼連結:點選下載下傳吧
實作思路:
首先定義辨別用來判斷使用者輸入字元或非字元
再定義三個值,左值,右值,運算結果
左值隻有在字元模式下才能指派,右值隻有在使用者點選了運算符後進入非字元模式,才能進行指派
當使用者點選"="後,通過對左值右值進行相應運算得出最終結果,并進行文本的顯示。
一:運作效果
二:前端布局代碼
1:二個自定義.xml
①:btn_equles.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的顔色 -->
<solid android:color="#FFF" />
<corners
android:radius="5dip" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
<!-- 邊框的寬度,每段虛線的長度,和兩段虛線之間的間隔和顔色 -->
<stroke
android:width="2dp"
android:dashWidth="6dp"
android:dashGap="6dp"
android:color="#e75050" />
<!-- 填充顔色 -->
<solid android:color="#F44336"/>
</shape>
②:button.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的顔色 -->
<solid android:color="#FFF" />
<corners
android:radius="5dip" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
<!-- 邊框的寬度,每段虛線的長度,和兩段虛線之間的間隔和顔色 -->
<stroke
android:width="2dp"
android:dashWidth="6dp"
android:dashGap="6dp"
android:color="#e75050" />
</shape>
2:顔色,字型,樣式
①:colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="black">#000</color>
<color name="white">#fff</color>
</resources>
②:string.xml
<resources>
<string name="app_name">Computer</string>
<string name="c">C</string>
<string name="division">÷</string>
<string name="multiplication">x</string>
<string name="back">←</string>
<string name="num_7">7</string>
<string name="num_8">8</string>
<string name="num_9">9</string>
<string name="subtraction">-</string>
<string name="num_4">4</string>
<string name="num_5">5</string>
<string name="Add">+</string>
<string name="num_6">6</string>
<string name="num_1">1</string>
<string name="num_2">2</string>
<string name="num_3">3</string>
<string name="little">.</string>
<string name="num_0">0</string>
<string name="seekSurplus">%</string>
<string name="equals">=</string>
</resources>
③:styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ButtonStyle" >
<item name="android:textColor">@color/black</item>
<item name="android:background">@drawable/button</item>
<item name="android:radius">10dp</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">25sp</item>
<item name="android:borderlessButtonStyle">@style/TextAppearance.AppCompat.Body1</item>
</style>
<style name="arithmeticStyle">
<item name="android:textColor">#F44336</item>
<item name="android:background">@drawable/button</item>
<item name="android:radius">10dp</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">25sp</item>
<item name="android:borderlessButtonStyle">@style/TextAppearance.AppCompat.Body1</item>
</style>
</resources>
2:activity.xml布局代碼
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#404040">
<Button
android:id="@+id/btn_c"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/c"
app:layout_constraintBottom_toTopOf="@+id/btn_num7"
app:layout_constraintEnd_toStartOf="@+id/btn_div"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/content1" />
<Button
android:id="@+id/btn_div"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/division"
app:layout_constraintBottom_toTopOf="@+id/btn_num8"
app:layout_constraintEnd_toStartOf="@+id/btn_Mul"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_c"
app:layout_constraintTop_toBottomOf="@+id/content1" />
<Button
android:id="@+id/btn_Mul"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/multiplication"
app:layout_constraintBottom_toTopOf="@+id/btn_num9"
app:layout_constraintEnd_toStartOf="@+id/btn_back"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_div"
app:layout_constraintTop_toBottomOf="@+id/content1" />
<Button
android:id="@+id/btn_back"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/back"
app:layout_constraintBottom_toTopOf="@+id/btn_sub"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_Mul"
app:layout_constraintTop_toBottomOf="@+id/content1" />
<Button
android:id="@+id/btn_num7"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_7"
app:layout_constraintBottom_toTopOf="@+id/btn_num4"
app:layout_constraintEnd_toStartOf="@+id/btn_num8"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_c" />
<Button
android:id="@+id/btn_num8"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_8"
app:layout_constraintBottom_toTopOf="@+id/btn_num6"
app:layout_constraintEnd_toStartOf="@+id/btn_num9"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num7"
app:layout_constraintTop_toBottomOf="@+id/btn_div" />
<Button
android:id="@+id/btn_num9"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_9"
app:layout_constraintBottom_toTopOf="@+id/btn_num5"
app:layout_constraintEnd_toStartOf="@+id/btn_sub"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num8"
app:layout_constraintTop_toBottomOf="@+id/btn_Mul" />
<Button
android:id="@+id/btn_sub"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/subtraction"
app:layout_constraintBottom_toTopOf="@+id/btn_add"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num9"
app:layout_constraintTop_toBottomOf="@+id/btn_back" />
<Button
android:id="@+id/btn_num4"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_4"
app:layout_constraintBottom_toTopOf="@+id/btn_num1"
app:layout_constraintEnd_toStartOf="@+id/btn_num6"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_num7" />
<Button
android:id="@+id/btn_num5"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_6"
app:layout_constraintBottom_toTopOf="@+id/btn_num3"
app:layout_constraintEnd_toStartOf="@+id/btn_add"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num6"
app:layout_constraintTop_toBottomOf="@+id/btn_num9" />
<Button
android:id="@+id/btn_num6"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_5"
app:layout_constraintBottom_toTopOf="@+id/btn_num2"
app:layout_constraintEnd_toStartOf="@+id/btn_num5"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num4"
app:layout_constraintTop_toBottomOf="@+id/btn_num8" />
<Button
android:id="@+id/btn_add"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/Add"
app:layout_constraintBottom_toTopOf="@+id/btn_equles"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num5"
app:layout_constraintTop_toBottomOf="@+id/btn_sub" />
<Button
android:id="@+id/btn_num1"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_1"
app:layout_constraintBottom_toTopOf="@+id/btn_little"
app:layout_constraintEnd_toStartOf="@+id/btn_num2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_num4" />
<Button
android:id="@+id/btn_num2"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_2"
app:layout_constraintBottom_toTopOf="@+id/btn_num0"
app:layout_constraintEnd_toStartOf="@+id/btn_num3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num1"
app:layout_constraintTop_toBottomOf="@+id/btn_num6" />
<Button
android:id="@+id/btn_num3"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_3"
app:layout_constraintBottom_toTopOf="@+id/btn_Seek"
app:layout_constraintEnd_toStartOf="@+id/btn_equles"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num2"
app:layout_constraintTop_toBottomOf="@+id/btn_num5" />
<Button
android:background="@drawable/btn_equles"
android:id="@+id/btn_equles"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="198dp"
android:text="@string/equals"
android:textColor="#FFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_Seek"
app:layout_constraintTop_toBottomOf="@+id/btn_add" />
<Button
android:id="@+id/btn_little"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/little"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_num0"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_num1" />
<Button
android:id="@+id/btn_num0"
style="@style/ButtonStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/num_0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_Seek"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_little"
app:layout_constraintTop_toBottomOf="@+id/btn_num2" />
<Button
android:id="@+id/btn_Seek"
style="@style/arithmeticStyle"
android:layout_width="90dp"
android:layout_height="90dp"
android:text="@string/seekSurplus"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_equles"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btn_num0"
app:layout_constraintTop_toBottomOf="@+id/btn_num3" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.31874144" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.45690835" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.59370726" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="532dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="625dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="723dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.16" />
<TextView
android:id="@+id/content2"
android:layout_width="397dp"
android:layout_height="117dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:gravity="bottom|end"
android:textSize="100sp"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/content1"
android:layout_width="397dp"
android:layout_height="109dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:gravity="bottom|end"
android:hint="@string/num_0"
android:textSize="100sp"
app:layout_constraintBottom_toTopOf="@+id/guideline9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/content2" />
</androidx.constraintlayout.widget.ConstraintLayout>
三:後端布局代碼
package cn.cg.computer;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.math.BigDecimal;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_0,btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9;
private Button btn_add,btn_c,btn_back,btn_division,btn_equle,btn_mul,btn_seek,btn_sub,btn_little;
private TextView content1,content2;
//輸入為字元
public static final int INPUT_NUMBER = 1;
//輸入為非字元
public static final int INPUT_NONNUMBER=2;
private int lastTimeInput = INPUT_NUMBER; //記錄上一次輸入狀态
//左值,右值,運算結果
private String result_Left=" ",result_Right=" ",result=" ";
//定義運算表示(+,-,*,/,%)
private String Tage="0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();
}
//初始綁定控件
@SuppressLint("WrongViewCast")
private void InitView()
{
//找到前端對應控件的位置
btn_0= findViewById(R.id.btn_num0);
btn_1=findViewById(R.id.btn_num1);
btn_2=findViewById(R.id.btn_num2);
btn_3=findViewById(R.id.btn_num3);
btn_4=findViewById(R.id.btn_num4);
btn_5=findViewById(R.id.btn_num5);
btn_6=findViewById(R.id.btn_num6);
btn_7=findViewById(R.id.btn_num7);
btn_8=findViewById(R.id.btn_num8);
btn_9=findViewById(R.id.btn_num9);
//加法
btn_add=findViewById(R.id.btn_add);
//清零
btn_c=findViewById(R.id.btn_c);
//回退一格
btn_back=findViewById(R.id.btn_back);
//除法
btn_division=findViewById(R.id.btn_div);
//等号
btn_equle=findViewById(R.id.btn_equles);
//乘法
btn_mul=findViewById(R.id.btn_Mul);
//求餘
btn_seek=findViewById(R.id.btn_Seek);
//減法
btn_sub=findViewById(R.id.btn_sub);
//小數點
btn_little=findViewById(R.id.btn_little);
//顯示運作結果内容
content1=findViewById(R.id.content1);
content2=findViewById(R.id.content2);
//設定監聽事件
setOnClickListener();
}
//設定監聽器
private void setOnClickListener() {
btn_0.setOnClickListener(this);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
btn_9.setOnClickListener(this);
btn_add.setOnClickListener(this);
btn_back.setOnClickListener(this);
btn_division.setOnClickListener(this);
btn_equle.setOnClickListener(this);
btn_mul.setOnClickListener(this);
btn_seek.setOnClickListener(this);
btn_sub.setOnClickListener(this);
btn_c.setOnClickListener(this);
btn_little.setOnClickListener(this);
}
//重寫onClick方法
@Override
public void onClick(View v) {
//判斷運算框長度是否等于7,如果等于就設定字型大小
if (content2.getText().toString().trim().length()>=4) {
content2.setTextSize(40);
}else {
content2.setTextSize(80);
}
//通過按鈕id實作多控件的監聽
switch(v.getId()){
case R.id.btn_add:
arithmetic("+");
break;
case R.id.btn_c:
clearText();
break;
case R.id.btn_back:
back();
break;
case R.id.btn_div:
arithmetic("/");
break;
case R.id.btn_equles:
equle();
break;
case R.id.btn_Mul:
arithmetic("*");
break;
case R.id.btn_Seek:
arithmetic("%");
break;
case R.id.btn_sub:
arithmetic("-");
break;
case R.id.btn_little:
getlittle(v);
break;
default:
inputNumber(v);
break;
}
}
//回退鍵
private void back() {
//判斷運算視窗是否有内容
if (!content2.getText().toString().trim().isEmpty()){
//判斷Tage如果為0表示隻有左值
if (!Tage.contains("0")){
if (content2.getText().toString().trim().length()==content2.getText().toString().trim().lastIndexOf(Tage)+1){
result_Left=content2.getText().toString().trim().substring(0,content2.getText().toString().trim().lastIndexOf(Tage));
content2.setText(result_Left );
//resultLeft T:形式
lastTimeInput=INPUT_NUMBER;
Tage="0";
}else if (content2.getText().toString().trim().length()>content2.getText().toString().trim().lastIndexOf(Tage)+1){
//resultLeft T resultRight:形式
result_Right=content2.getText().toString().trim().substring(content2.getText().toString().trim().lastIndexOf(Tage),content2.getText().toString().trim().length()-1);
content2.setText(content2.getText().toString().trim().substring(0,content2.getText().toString().trim().length()-1));
}
}else {
//result_Left
if (content2.getText().toString().trim().length() == 1) {
content2.setText("0");
result_Left = "0";
}else {
result_Left=content2.getText().toString().trim().substring(0,content2.getText().toString().trim().length()-1);
content2.setText(result_Left);
}
}
}
}
//使用者點選運算符号
private void arithmetic(String t) {
//設定标記
Tage=t;
if (!content1.getText().toString().trim().isEmpty()){
lastTimeInput=INPUT_NONNUMBER;
if (content2.getText().toString().trim().isEmpty()){
result_Left=result;
content2.setText(result_Left+t);
}else{
//表示LeftValue+"."形式去掉"."
if (content2.getText().toString().trim().lastIndexOf(".")+1==content2.getText().toString().trim().length()){
result_Left=content2.getText().toString().trim().substring(0,content2.getText().toString().trim().length()-1);
content2.setText(result_Left);
}
//判斷運算框中是否有負号
if (content2.getText().toString().trim().contains("-"))
{
//在首位表示負數可以
if (content2.getText().toString().trim().lastIndexOf("-")==0)
{
content2.setText(result_Left+t);
}
}
if (!content2.getText().toString().trim().contains(Tage))
{
content2.setText(result_Left+t);
}
}
}else {
lastTimeInput=INPUT_NUMBER;
}
}
//使用者點選等于,進行運算
private void equle() {
try {
content2.setTextSize(40);
content1.setTextSize(80);
double finaloutcome=0.0;
int seek=0;
if (content2.getText().toString().trim().contains("+"))
{
finaloutcome=add(Double.valueOf(result_Left.trim()),Double.valueOf(result_Right.trim()));
}else if (content2.getText().toString().trim().contains("-"))
{
finaloutcome=sub(Double.valueOf(result_Left.trim()),Double.valueOf(result_Right.trim()));
}else if (content2.getText().toString().trim().contains("*"))
{
finaloutcome=mul(Double.valueOf(result_Left.trim()),Double.valueOf(result_Right.trim()));
}else if (content2.getText().toString().trim().contains("/"))
{
finaloutcome=div(Double.valueOf(result_Left.trim()),Double.valueOf(result_Right.trim()));
} else if (content2.getText().toString().trim().contains("%")) {
finaloutcome=Double.valueOf(result_Left.trim())%Double.valueOf(result_Right.trim());
seek=(int) finaloutcome;
}else{
Toast.makeText(MainActivity.this,"出現異常",Toast.LENGTH_LONG);
return;
}
if (content2.getText().toString().trim().contains("%")){
result=Integer.toString(seek);
content1.setText(result);
}else{
if (!result_Left.contains(".")&&!result_Right.contains(".")&&!content2.getText().toString().trim().contains("/"))
{
result=Integer.toString((int)finaloutcome);
content1.setText(result);
}else
{
result=Double.toString(finaloutcome);
content1.setText(result);
}
}
lastTimeInput=INPUT_NUMBER;
result_Left=" ";
result_Right=" ";
content2.setText("");
}catch (Exception ex)
{
Toast.makeText(MainActivity.this,ex.toString(),Toast.LENGTH_LONG).show();
}
}
//小數點
private void getlittle(View v) {
String little_str=((Button)v).getText().toString().trim();
if (lastTimeInput==INPUT_NUMBER){
if (content1.getText().toString().trim().isEmpty()){
result_Left="0.";
}else if (!result_Left.contains(".")){
result_Left+=little_str;
}
result=result_Left;
content1.setText("="+result);
content2.setText(result_Left);
}
}
//按C鍵,清空所有消息
private void clearText() {
Tage="0";
result_Left="";
result_Right="";
lastTimeInput=INPUT_NUMBER;
content2.setText(" ");
content1.setTextSize(80);
content1.setText("");
}
//數字的輸入
private void inputNumber(View v) {
//使用者點選設定結果框字型為40sp
content1.setTextSize(40);
//擷取按鈕上的文本
String key=((Button)v).getText().toString();
//數字模式輸入
if (lastTimeInput==INPUT_NUMBER){
if (result_Left.trim().isEmpty())
{
result_Left=key;
}else
{
//首位是否為0
if (result_Left.startsWith("0")&&result_Left.trim().length()==1){
result_Left=key;
}else {
result_Left+=key;
}
}
result=result_Left;
content1.setText("="+result);
content2.setText(result_Left);
}else
{
//右邊指派
if (result_Right.trim().isEmpty())
{
result_Right=key;
}else
{
//首位是否為0
if (result_Right.startsWith("0")&&result_Right.trim().length()==1){
result_Right=key;
}else {
result_Right+=key;
}
}
content2.setText(content2.getText().toString().trim().substring(0,result_Left.length()+1)+result_Right);
}
}
/*
使用者退出軟體,彈出提示框
*/
@Override
public void onBackPressed() {
//設定提示框顯示
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示")
.setIcon(R.drawable.warn)
.setMessage("你确定要退出?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//退出程式
MainActivity.this.finish();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//取消提示框
dialog.dismiss();
}
});
AlertDialog dialog= builder.create();
dialog.show();
}
/*
計算:加減乘除
*/
public static Double div(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2, 10, 4).doubleValue();
}
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.subtract(b2).doubleValue();
}
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.add(b2).doubleValue();
}
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.multiply(b2).doubleValue();
}
}
四:bug詳情
(先記錄等有空再做修改)
1:進行運算後點選"."出現bug(小數點要進行相應的驗證)
2:超過16位後出現運算結果不對的bug