这次Android作业主要实现一个计算器
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:rowCount="6" android:columnCount="4" > //利用网格布局声明6行4列的计算器布局 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_columnSpan="4" android:layout_marginLeft="4px" android:text="0" android:textSize="50dip" android:id="@+id/result" /> //输入框 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_columnSpan="4" android:text="清楚" android:textSize="26sp" android:id="@+id/clean" /> //清空按钮 //各种数字按钮 <Button android:text="1" android:textSize="40sp" android:id="@+id/btn1"/> <Button android:text="2" android:textSize="40sp" android:id="@+id/btn2"/> <Button android:text="3" android:textSize="40sp" android:id="@+id/btn3"/> <Button android:text="+" android:textSize="40sp" android:id="@+id/btnPlus"/> <Button android:text="4" android:textSize="40sp" android:id="@+id/btn4"/> <Button android:text="5" android:textSize="40sp" android:id="@+id/btn5"/> <Button android:text="6" android:textSize="40sp" android:id="@+id/btn6"/> <Button android:text="-" android:textSize="40sp" android:id="@+id/btnReduce"/> <Button android:text="7" android:textSize="40sp" android:id="@+id/btn7"/> <Button android:text="8" android:textSize="40sp" android:id="@+id/btn8"/> <Button android:text="9" android:textSize="40sp" android:id="@+id/btn9"/> <Button android:text="*" android:textSize="40sp" android:id="@+id/btnMultiply"/> <Button android:text="." android:textSize="40sp" android:id="@+id/btnPoint"/> <Button android:text="0" android:textSize="40sp" android:id="@+id/btn0"/> <Button android:text="=" android:textSize="40sp" android:id="@+id/btnSum"/> <Button android:text="/" android:textSize="40sp" android:id="@+id/btnDivide"/> </GridLayout>
MainActivity.java:
package com.example.administrator.calculator; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import android.view.View; import android.view.View.OnClickListener; //导入需要用到的包 public class MainActivity extends AppCompatActivity{ public Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnPlus,btnReduce,btnMultiply,btnPoint,btnSum,btnDivide,clean;//声明各个按钮 public TextView txt;//声明文本输入框 public String str = "";//声明一个空字符串用作显示文本输入框的内容 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt = (TextView)findViewById(R.id.result);//建立文本输入框与各个按钮与XML的连接 btn0 = (Button)findViewById(R.id.btn0); btn1 = (Button)findViewById(R.id.btn1); btn2 = (Button)findViewById(R.id.btn2); btn3 = (Button)findViewById(R.id.btn3); btn4 = (Button)findViewById(R.id.btn4); btn5 = (Button)findViewById(R.id.btn5); btn6 = (Button)findViewById(R.id.btn6); btn7 = (Button)findViewById(R.id.btn7); btn8 = (Button)findViewById(R.id.btn8); btn9 = (Button)findViewById(R.id.btn9); btnPlus = (Button)findViewById(R.id.btnPlus); btnReduce = (Button)findViewById(R.id.btnReduce); btnMultiply = (Button)findViewById(R.id.btnMultiply); btnPoint = (Button)findViewById(R.id.btnPoint); btnSum = (Button)findViewById(R.id.btnSum); btnDivide = (Button)findViewById(R.id.btnDivide); clean = (Button)findViewById(R.id.clean); btn0.setOnClickListener(new OnClick());//注册监听器 btn1.setOnClickListener(new OnClick()); btn2.setOnClickListener(new OnClick()); btn3.setOnClickListener(new OnClick()); btn4.setOnClickListener(new OnClick()); btn5.setOnClickListener(new OnClick()); btn6.setOnClickListener(new OnClick()); btn7.setOnClickListener(new OnClick()); btn8.setOnClickListener(new OnClick()); btn9.setOnClickListener(new OnClick()); btnPlus.setOnClickListener(new OnClick()); btnReduce.setOnClickListener(new OnClick()); btnMultiply.setOnClickListener(new OnClick()); btnPoint.setOnClickListener(new OnClick()); btnSum.setOnClickListener(new OnClick()); btnDivide.setOnClickListener(new OnClick()); clean.setOnClickListener(new OnClick()); } class OnClick implements OnClickListener{ public void onClick(View v){ double first,res,second; String [] arr; switch(v.getId()){ //编写监听事件,如果按钮为数字则直接显示在文本框上 case R.id.btn0: txt.setText(str=str+"0" ); break; case R.id.btn1: txt.setText(str=str+"1" ); break; case R.id.btn2: txt.setText(str=str+"2" ); break; case R.id.btn3: txt.setText(str=str+"3" ); break; case R.id.btn4: txt.setText(str=str+"4" ); break; case R.id.btn5: txt.setText(str=str+"5" ); break; case R.id.btn6: txt.setText(str=str+"6" ); break; case R.id.btn7: txt.setText(str=str+"7" ); break; case R.id.btn8: txt.setText(str=str+"8" ); break; case R.id.btn9: txt.setText(str=str+"9" ); break; case R.id.btnPlus: txt.setText(str=str+"+" ); break; case R.id.btnReduce: txt.setText(str=str+"-" ); break; case R.id.btnMultiply: txt.setText(str=str+"*" ); break; case R.id.btnDivide: txt.setText(str=str+"/" ); break; case R.id.btnSum: //点击等于按钮,利用正则把文本框中的运算符提取出来,再利用parseDouble将剩下的字符转为数字,最后进行运算 if(str.contains("+")) {arr=str.split("\\+"); first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first+second; txt.setText(String.valueOf(res));} if(str.contains("-")) {arr=str.split("-"); first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first-second; txt.setText(String.valueOf(res));} if(str.contains("*")) {arr=str.split("\\*"); first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first*second; txt.setText(String.valueOf(res));} if(str.contains("/")) {arr=str.split("/"); first=Double.parseDouble(arr[0]); second=Double.parseDouble(arr[1]);res=first/second; txt.setText(String.valueOf(res));} break; case R.id.clean: //点击清除按钮,将str置空,再替换到输入文本框上 str=""; txt.setText(str); } } } }
效果图: