Android——计算器(Calculator)
- 简述
- 效果图
- 布局代码
- 功能代码
- 测例效果
简述
步骤:
1:输入一个数储存在变量num1中
2:选择 + - * /任意一个运算符
3:输入另一个数储存在变量num2中
4:并把运算结果保存到变量result中并显示
//如果被除数为0则结果默认显示为0
//在把String类型转化成double时有可能出现NumberFormatException异常,tyr,catch一下就可以了
效果图

布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><TextViewandroid:id="@+id/Show"android:layout_width="match_parent"android:layout_height="100dp"android:textSize="50sp"android:hint="0"/><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/Clear"android:layout_width="match_parent"android:layout_height="70dp"android:text="Reset"android:textAllCaps="false"android:textSize="20sp"/><Buttonandroid:id="@+id/Number7"android:layout_width="100dp"android:layout_height="70dp"android:text="7"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Clear"/><Buttonandroid:id="@+id/Number8"android:layout_width="100dp"android:layout_height="70dp"android:text="8"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Clear"android:layout_marginLeft="100dp"/><Buttonandroid:id="@+id/Number9"android:layout_width="100dp"android:layout_height="70dp"android:text="9"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Clear"android:layout_marginLeft="200dp"/><Buttonandroid:id="@+id/Add"android:layout_width="100dp"android:layout_height="70dp"android:text="+"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Clear"android:layout_marginLeft="300dp"/><Buttonandroid:id="@+id/Number4"android:layout_width="100dp"android:layout_height="70dp"android:text="4"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number7"/><Buttonandroid:id="@+id/Number5"android:layout_width="100dp"android:layout_height="70dp"android:text="5"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number8"android:layout_marginLeft="100dp"/><Buttonandroid:id="@+id/Number6"android:layout_width="100dp"android:layout_height="70dp"android:text="6"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number9"android:layout_marginLeft="200dp"/><Buttonandroid:id="@+id/Subtract"android:layout_width="100dp"android:layout_height="70dp"android:text="-"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Add"android:layout_marginLeft="300dp"/><Buttonandroid:id="@+id/Number1"android:layout_width="100dp"android:layout_height="70dp"android:text="1"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number5"/><Buttonandroid:id="@+id/Number2"android:layout_width="100dp"android:layout_height="70dp"android:text="2"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number6"android:layout_marginLeft="100dp"/><Buttonandroid:id="@+id/Number3"android:layout_width="100dp"android:layout_height="70dp"android:text="3"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number6"android:layout_marginLeft="200dp"/><Buttonandroid:id="@+id/Multiply"android:layout_width="100dp"android:layout_height="70dp"android:text="*"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Subtract"android:layout_marginLeft="300dp"/><Buttonandroid:id="@+id/Point"android:layout_width="100dp"android:layout_height="70dp"android:text="."android:textAllCaps="false"android:textSize="30sp"android:layout_below="@+id/Number1"/><Buttonandroid:id="@+id/Number0"android:layout_width="100dp"android:layout_height="70dp"android:text="0"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number2"android:layout_marginLeft="100dp"/><Buttonandroid:id="@+id/Equal"android:layout_width="100dp"android:layout_height="70dp"android:text="="android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Number3"android:layout_marginLeft="200dp"/><Buttonandroid:id="@+id/Divide"android:layout_width="100dp"android:layout_height="70dp"android:text="/"android:textAllCaps="false"android:textSize="20sp"android:layout_below="@+id/Multiply"android:layout_marginLeft="300dp"/></RelativeLayout></LinearLayout>
功能代码
public class MainActivity extends AppCompatActivity {private TextView DisplayBox;private Button Number0, Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8,Number9;private Button Add,Subtract,Multiply,Divide,Equal;// + - * / =private Button Reset ,Point;double num1 = 0,num2 = 0;//第一次输入的数和第二次输入的数double result = 0;//存放运算结果int Operator;//用于判断是那个运算符//private String str1,str2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);DisplayBox = (TextView) findViewById(R.id.Show);Number0 = (Button) findViewById(R.id.Number0);Number1 = (Button) findViewById(R.id.Number1);Number2 = (Button) findViewById(R.id.Number2);Number3 = (Button) findViewById(R.id.Number3);Number4 = (Button) findViewById(R.id.Number4);Number5 = (Button) findViewById(R.id.Number5);Number6 = (Button) findViewById(R.id.Number6);Number7 = (Button) findViewById(R.id.Number7);Number8 = (Button) findViewById(R.id.Number8);Number9 = (Button) findViewById(R.id.Number9);Add = (Button) findViewById(R.id.Add);Subtract = (Button) findViewById(R.id.Subtract);Multiply = (Button) findViewById(R.id.Multiply);Divide = (Button) findViewById(R.id.Divide);Equal = (Button) findViewById(R.id.Equal);Reset = (Button) findViewById(R.id.Clear);Point = (Button) findViewById(R.id.Point);SetListen();}public void SetListen(){OnClick onClick = new OnClick();Number0.setOnClickListener(onClick);Number1.setOnClickListener(onClick);Number2.setOnClickListener(onClick);Number3.setOnClickListener(onClick);Number4.setOnClickListener(onClick);Number5.setOnClickListener(onClick);Number6.setOnClickListener(onClick);Number7.setOnClickListener(onClick);Number8.setOnClickListener(onClick);Number9.setOnClickListener(onClick);Point.setOnClickListener(onClick);Add.setOnClickListener(onClick);Subtract.setOnClickListener(onClick);Multiply.setOnClickListener(onClick);Divide.setOnClickListener(onClick);Equal.setOnClickListener(onClick);Reset.setOnClickListener(onClick);}class OnClick implements View.OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.Clear:DisplayBox.setText(null);break;case R.id.Number0:String str0 = DisplayBox.getText().toString().trim();str0 += "0";DisplayBox.setText(str0);break;case R.id.Number1:String str1 = DisplayBox.getText().toString().trim();str1 += "1";DisplayBox.setText(str1);break;case R.id.Number2:String str2 = DisplayBox.getText().toString().trim();str2 += "2";DisplayBox.setText(str2);break;case R.id.Number3:String str3 = DisplayBox.getText().toString().trim();str3 += "3";DisplayBox.setText(str3);break;case R.id.Number4:String str4 = DisplayBox.getText().toString().trim();str4 += "4";DisplayBox.setText(str4);break;case R.id.Number5:String str5 = DisplayBox.getText().toString().trim();str5 += "5";DisplayBox.setText(str5);break;case R.id.Number6:String str6 = DisplayBox.getText().toString().trim();str6 += "6";DisplayBox.setText(str6);break;case R.id.Number7:String str7 = DisplayBox.getText().toString().trim();str7 += "7";DisplayBox.setText(str7);break;case R.id.Number8:String str8 = DisplayBox.getText().toString().trim();str8 += "8";DisplayBox.setText(str8);break;case R.id.Number9:String str9 = DisplayBox.getText().toString().trim();str9 += "9";DisplayBox.setText(str9);break;case R.id.Point:String point = DisplayBox.getText().toString().trim();point += ".";DisplayBox.setText(point);break;case R.id.Add:String add = DisplayBox.getText().toString().trim();if (add.equals(null)){return;}try {num1 = Double.valueOf(add);}catch (NumberFormatException e){e.printStackTrace();}add += "+";DisplayBox.setText(null);Operator = 1;break;case R.id.Subtract:String subtract = DisplayBox.getText().toString().trim();if (subtract.equals(null)){return;}try {num1 = Double.valueOf(subtract);}catch (NumberFormatException e){e.printStackTrace();}subtract += "-";DisplayBox.setText(null);Operator = 2;break;case R.id.Multiply:String multiply = DisplayBox.getText().toString().trim();if (multiply.equals(null)){return;}try {num1 = Double.valueOf(multiply);}catch (NumberFormatException e){e.printStackTrace();}multiply += "*";DisplayBox.setText(null);Operator = 3;break;case R.id.Divide:String divide = DisplayBox.getText().toString().trim();if (divide.equals(null)){return;}try {num1 = Double.valueOf(divide);}catch (NumberFormatException e){e.printStackTrace();}divide += "/";DisplayBox.setText(null);Operator = 4;break;case R.id.Equal:String equal = DisplayBox.getText().toString().trim();try {num2 = Double.valueOf(equal);}catch (NumberFormatException e){e.printStackTrace();}DisplayBox.setText(equal);switch (Operator){case 1:result = num1 + num2;DisplayBox.setText(num1 + "+" + num2 + "=" +result);break;case 2:result = num1 - num2;DisplayBox.setText(num1 + "-" + num2 + "=" +result);break;case 3:result = num1 * num2;DisplayBox.setText(num1 + "*" + num2 + "=" +result);break;case 4:if (num2 == 0){DisplayBox.setText("0");}else {result = num1 / num2;DisplayBox.setText(num1 + "/" + num2 + "=" + result);}break;}break;default:result = 0;break;}}}
测例效果




















