安卓实验 设计一个计算器界面

只是一个简易的计算器,实现了简单地计算功能,没有写回退功能

源码下载地址:点击下载

实现效果 

 

java代码

package com.example.experiment2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private  final  String Tag="MainActivity";
    private TextView tv_input;
    private  float result;
    private String fuhao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initUi();
    }
    private void initUi() {
        tv_input = findViewById(R.id.tv_input);
    }
    private String getresult() {
        String data= tv_input.getText().toString();
        //将数字与运算符号切割
        String[] str1 = data.split(" ");
        //循环计算,得到最后结果
        while (str1.length!=1){
            //×,÷计算方法
            for(int i=0;i<str1.length;i++){
                if(str1[i].equals("×")||str1[i].equals("÷")){
                    if(str1[i].equals("×")){
                        str1[i]=(Float.parseFloat(str1[i-1])*Float.parseFloat(str1[i+1]))+"";
                        int [] index=new int[]{i-1,i+1};
                        str1=deletestr(index,str1);
                    }else {
                        str1[i]=(Float.parseFloat(str1[i-1])/Float.parseFloat(str1[i+1]))+"";
                        int [] index=new int[]{i-1,i+1};
                        str1=deletestr(index,str1);
                    }
                }
            }
            //+,-计算方法
            for(int i=0;i<str1.length;i++){
                if("+".equals(str1[i])||"-".equals(str1[i])){
                    if(str1[i].equals("+")){
                        str1[i]=(Float.parseFloat(str1[i-1])+Float.parseFloat(str1[i+1]))+"";
                        int [] index=new int[]{i-1,i+1};
                        str1=deletestr(index,str1);
                    }else {
                        str1[i]=(Float.parseFloat(str1[i-1])-Float.parseFloat(str1[i+1]))+"";
                        int [] index=new int[]{i-1,i+1};
                        str1=deletestr(index,str1);
                    }
                }
            }
        }
        return str1[0];
    }
    //同时删除数组中计算完成符号左右数
    private String[] deletestr(int [] i, String[] str1) {
        List<String> strs=new ArrayList<String>();
        for(String s:str1){
            strs.add(s);
        }
        strs.remove(i[0]);
        strs.remove(i[1]-1);
        String str[]=new   String[str1.length-2];
       for(int j = 0;j<str.length;j++){
            str[j]=strs.get(j);
        }
        return  str;
    }

    private void tvInputtext(String s) {
        //第一次输入 将0去除,以及上次结果置空
        if(tv_input.getText().toString().equals("0")||tv_input.getText().toString().contains("=")){
            tv_input.setText("");
        }
        //符号左右添加空格方便split
        if(s.equals("×")||s.equals("-")||s.equals("+")||s.equals("÷")){
            tv_input.setText(tv_input.getText()+" "+s+" ");
        }else {
            tv_input.setText(tv_input.getText()+s);
        }
    }
    //按钮点击事件
    public  void onSubmit(View view){
        int id = view.getId();
        switch (id){
            case R.id.bt_value0:
                tvInputtext("0");
                break;
            case R.id.bt_value1:
                tvInputtext("1");
                break;
            case R.id.bt_value2:
                tvInputtext("2");
                break;
            case R.id.bt_value3:
                tvInputtext("3");
                break;
            case R.id.bt_value4:
                tvInputtext("4");
                break;
            case R.id.bt_value5:
                tvInputtext("5");
                break;
            case R.id.bt_value6:
                tvInputtext("6");
                break;
            case R.id.bt_value7:
                tvInputtext("7");
                break;
            case R.id.bt_value8:
                tvInputtext("8");
                break;
            case R.id.bt_value9:
                tvInputtext("9");
                break;
            case R.id.bt_cheng:
                tvInputtext("×");
                break;
            case R.id.bt_chu:
                tvInputtext("÷");
                break;
            case R.id.bt_clean:
                //清除按钮 置空
                tv_input.setText("");
                break;
            case R.id.bt_dengyu:
                tv_input.setText(tv_input.getText()+"="+getresult());
                break;
            case R.id.bt_dian:
                tvInputtext(".");
                break;
            case R.id.bt_jia:
                tvInputtext("+");
                break;
            case R.id.bt_jian:
                tvInputtext("-");
                break;
        }
    }
}

XML文件 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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:orientation="vertical"
    android:padding="15dp"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="right|center_vertical"
        android:paddingRight="10dp"
        android:text="0"
        android:id="@+id/tv_input"
        android:textColor="#030303"
        android:textSize="25sp" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="清除"
        android:onClick="onSubmit"
        android:textSize="16sp"
        android:id="@+id/bt_clean"
        android:layout_marginTop="10dp"
        />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:columnCount="5"
        android:rowCount="5">

        <Button
            android:id="@+id/bt_value7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="0"
            android:layout_column="0"
            android:text="7"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="0"
            android:layout_column="1"
            android:text="8"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="0"
            android:layout_column="2"
            android:text="9"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_chu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="0"
            android:layout_column="3"
            android:text="÷"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        //第二行

        <Button
            android:id="@+id/bt_value4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="1"
            android:layout_column="0"
            android:text="4"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="1"
            android:layout_column="1"
            android:text="5"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="1"
            android:layout_column="2"
            android:text="6"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_cheng"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="1"
            android:layout_column="3"
            android:text="×"
            android:onClick="onSubmit"
            android:textSize="40dp" />
        //第三行

        <Button
            android:id="@+id/bt_value1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="2"
            android:layout_column="0"
            android:text="1"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="2"
            android:layout_column="1"
            android:text="2"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="2"
            android:layout_column="2"
            android:text="3"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_jian"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="2"
            android:layout_column="3"
            android:text="-"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        //第四行

        <Button
            android:id="@+id/bt_dian"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="3"
            android:layout_column="0"
            android:text="."
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_value0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="3"
            android:layout_column="1"
            android:text="0"
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_dengyu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="3"
            android:layout_column="2"
            android:text="="
            android:onClick="onSubmit"
            android:textSize="40dp" />

        <Button
            android:id="@+id/bt_jia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="3"
            android:layout_column="3"
            android:text="+"
            android:onClick="onSubmit"
            android:textSize="40dp" />


    </GridLayout>


</LinearLayout>

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值