Android简易计算机

简易计算机
思路:

  1. 线性布局或者网格布局画出基本界面
  2. 给每个按钮添加点击事件
  3. 添加监听事件
  4. switch语法业务逻辑的处理
  5. 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:rowCount="7"
    android:columnCount="4"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/btn_main2_7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="7"
        />

    <Button
        android:id="@+id/btn_main2_8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="8"
        />

    <Button
        android:id="@+id/btn_main2_9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="9"
        />

    <Button
        android:id="@+id/btn_main2_mult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*"
        />

    <Button
        android:id="@+id/btn_main2_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4"
        />

    <Button
        android:id="@+id/btn_main2_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5"
        />

    <Button
        android:id="@+id/btn_main2_6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="6"
        />

    <Button
        android:id="@+id/btn_main2_div"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="/"
        />

 <Button
     android:id="@+id/btn_main2_1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="1"
     />

 <Button
     android:id="@+id/btn_main2_2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="2"
     />

 <Button
     android:id="@+id/btn_main2_3"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="3"
     />

 <Button
     android:id="@+id/btn_main2_min"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="-"
     />

 <Button
     android:id="@+id/btn_main2_0"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="0"
     />

 <Button
     android:id="@+id/btn_main2_pot"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="."
     />

 <Button
     android:id="@+id/btn_main2_eq"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="="
     />

 <Button
     android:id="@+id/btn_main2_add"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="+"
     />

  <TextView
       android:id="@+id/textView"
       android:layout_width="match_parent"
       android:layout_columnSpan="4"
       android:layout_height="70dp"
       />
 <EditText
     android:id="@+id/editView"
     android:layout_width="wrap_content"
     android:layout_columnSpan="4"
     android:layout_height="100dp"
     />



</GridLayout>

效果图:

在这里插入图片描述

注意:界面的数字显示按钮在数字的下面,可根据自己的需求写。
业务处理界面:

 //定义所有按钮控制
    private  Button btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_0,btn_pot,btn_eq,btn_add,btn_min,btn_mult,btn_div;
    //显示输入的数字
    private  EditText editText;
    //显示算式
    private TextView textView;
    //两个操作数
    private double n1 = 0.0, n2 = 0.0;
    //操作符
    private  String opt = "+";
  //根据被选中的id添加监听事件
  private View.OnClickListener listener = new View.OnClickListener() {
      @Override
      public void onClick(View v) {
     editText =(EditText)  findViewById(R.id.editView);
     textView =(TextView)  findViewById(R.id.textView);
     //获取字符
          String s = editText.getText().toString();
          //View视图值指的是Button的按钮
          Button btn = (Button) v;
          try {
           switch (btn.getId()){
               case R.id.btn_main2_1: //1
               {
                    String str = editText.getText().toString();
                    editText.setText(str + 1);
                    str = editText.getText().toString();
                    textView.setText(str);
                    break;
               }
               case R.id.btn_main2_add ://+
               {
                   String str = editText.getText().toString();
                   n1 = Double.parseDouble(str);
                   opt = "+";
                   textView.setText(n1 + opt);
                   editText.setText("");
                   break;
               }
               case R.id.btn_main2_2 ://2
               {
                   String str = editText.getText().toString();
                   editText.setText(str + 2);
                   str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }
               case R.id.btn_main2_eq ://==
               {
                   if(opt == "+"){
                     String str =editText.getText().toString();
                     n2 = Double.parseDouble(str);
                     textView.setText(n1 + opt + n2 + "=");
                     editText.setText((n1 + n2)+"");
                   }else if(opt == "-"){
                       String str =editText.getText().toString();
                       n2 = Double.parseDouble(str);
                       textView.setText(n1 + opt +n2+"=");
                       editText.setText((n1 - n2)+"");

                   }else if(opt == "*"){
                       String str =editText.getText().toString();
                       n2 = Double.parseDouble(str);
                       textView.setText(n1 + opt +n2+"=");
                       editText.setText((n1 * n2)+"");
                   }else  if (opt == "/"){
                       if(n2 == 0){
                           editText.setText("");
                           textView.setText("除数不能为0");
                           break;
                       }else {
                           String str = editText.getText().toString();
                           n2 = Double.parseDouble(str);
                           textView.setText(n1 + opt + n2 + "=");
                           editText.setText((n1 / n2) + "");
                       }
                   }
               }
               case R.id.btn_main2_3 : //3
                    {
                        editText.setText(editText.getText().toString() + 3);
                        String str = editText.getText().toString();
                        textView.setText(str);
                        break;
                    }

               case R.id.btn_main2_4 : //4
               {
                   editText.setText(editText.getText().toString() + 4);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }

               case R.id.btn_main2_5 : //5
               {
                   editText.setText(editText.getText().toString() + 5);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }

               case R.id.btn_main2_6 : //6
               {
                   editText.setText(editText.getText().toString() + 6);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }

               case R.id.btn_main2_7 : //7
               {
                   editText.setText(editText.getText().toString() + 7);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }

               case R.id.btn_main2_8 : //8
               {
                   editText.setText(editText.getText().toString() + 8);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }


               case R.id.btn_main2_9 : //9
               {
                   editText.setText(editText.getText().toString() + 9);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }

               case R.id.btn_main2_0 : //0
               {
                   textView.setText(n1 +  opt  + 10);
                   editText.setText(editText.getText().toString() + 0);
                   String str = editText.getText().toString();
                   textView.setText(str);
                   break;
               }
               case R.id.btn_main2_pot://.
               {
                   String str = editText.getText().toString();
                   if(str.indexOf(".") != -1)
                       //判断字符串中是否已经包含了小数点,如果有就什么也不做
                   {

                   }
                   else //如果没有小数点
                   {
                       if(str.equals("0"))//如果开始为0,
                           editText.setText(("0" + ".").toString());
                       else if(str.equals(""))//如果初时显示为空,就什么也不做
                       {

                       }
                       else
                           editText.setText(str + ".");
                   }
                   break;
               }
               case R.id.btn_main2_div://操作符 /
               {
                   String str = editText.getText().toString();
                   n1 = Double.parseDouble(str);
                   opt = "/";
                   editText.setText("");
                   textView.setText(n1 + opt);
                   break;
               }
               case R.id.btn_main2_mult://操作符*
               {
                   String str = editText.getText().toString();
                   n1 = Double.parseDouble(str);
                   opt = "*";
                   editText.setText("");
                   textView.setText(n1 + opt);
                   break;
               }
               case R.id.btn_main2_min://操作符-
               {
                   String str = editText.getText().toString();
                   n1 = Double.parseDouble(str);
                   opt = "-";
                   editText.setText("");
                   textView.setText(n1 + opt);
                   break;
               }
           }

          }catch (Exception e){

          }

      }
  };


    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main2);
      //获取按钮的id
       btn_7 = (Button) findViewById(R.id.btn_main2_7);
       btn_8 = (Button) findViewById(R.id.btn_main2_8);
       btn_9 = (Button) findViewById(R.id.btn_main2_9);
       btn_mult = (Button) findViewById(R.id.btn_main2_mult);

       btn_4 = (Button) findViewById(R.id.btn_main2_4);
       btn_5 = (Button) findViewById(R.id.btn_main2_5);
       btn_6 = (Button) findViewById(R.id.btn_main2_6);
       btn_div= (Button) findViewById(R.id.btn_main2_div);

       btn_1 = (Button) findViewById(R.id.btn_main2_1);
       btn_2 = (Button) findViewById(R.id.btn_main2_2);
       btn_3 = (Button) findViewById(R.id.btn_main2_3);
       btn_min= (Button) findViewById(R.id.btn_main2_min);

       btn_0 = (Button) findViewById(R.id.btn_main2_0);
       btn_pot = (Button) findViewById(R.id.btn_main2_pot);
       btn_eq = (Button) findViewById(R.id.btn_main2_eq);
       btn_add= (Button) findViewById(R.id.btn_main2_add);

       //为按钮添加监听事件
        btn_7.setOnClickListener((View.OnClickListener) listener);
        btn_8.setOnClickListener((View.OnClickListener) listener);
        btn_9.setOnClickListener((View.OnClickListener) listener);
        btn_mult.setOnClickListener((View.OnClickListener) listener);

        btn_4.setOnClickListener((View.OnClickListener) listener);
        btn_5.setOnClickListener((View.OnClickListener) listener);
        btn_6.setOnClickListener((View.OnClickListener) listener);
        btn_div.setOnClickListener((View.OnClickListener) listener);

        btn_1.setOnClickListener((View.OnClickListener) listener);
        btn_2.setOnClickListener((View.OnClickListener) listener);
        btn_3.setOnClickListener((View.OnClickListener) listener);
        btn_min.setOnClickListener((View.OnClickListener) listener);


        btn_0.setOnClickListener((View.OnClickListener) listener);
        btn_pot.setOnClickListener((View.OnClickListener) listener);
        btn_eq.setOnClickListener((View.OnClickListener) listener);
        btn_add.setOnClickListener((View.OnClickListener) listener);
   }

注意: View本来是所有控件的父类,但这里的onClick(View v)指的是每一个按钮。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值