Android Studio 实现四则运算+平方开方简易计算器

四则运算+平方开方简易计算器

学渣一枚,在学习其他博主方法的基础上进行了简单的布局修改和实现平方功能。
先post上博主学习网址为敬:https://blog.csdn.net/Github_/article/details/52462522?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-23.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-23.nonecase
谢谢以上博主的方法。

实现平方开方的方法
平方使用a*a; 开方使用Math.sqrt(a),所以要设变量a,因为开方会有小数出现,要设a的数值类型为double。

现在开始post代码
MainActivity.java

package com.example.calculatortest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button btn0;
    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private Button btn5;
    private Button btn6;
    private Button btn7;
    private Button btn8;
    private Button btn9;
    private Button add;     //加
    private Button minus;//减
    private Button multiply;//乘
    private Button divide;//除
    private Button sqrt;//开根号
    private Button power;//平方
    private Button point;//小数点
    private Button clear;//全部清除
    private Button equal;//等于
    private EditText editText;//显示输入数字和结果 Displays the input numbers and results
    private TextView textview;//显示算式 Display expression
    private String operate="+";//操作符
    private double a=0.0,b=0.0;//两个需要计算的数 Variable


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取全部按钮id
        btn0=(Button)findViewById(R.id.num0);
        btn1=(Button)findViewById(R.id.num1);
        btn2=(Button)findViewById(R.id.num2);
        btn3=(Button)findViewById(R.id.num3);
        btn4=(Button)findViewById(R.id.num4);
        btn5=(Button)findViewById(R.id.num5);
        btn6=(Button)findViewById(R.id.num6);
        btn7=(Button)findViewById(R.id.num7);
        btn8=(Button)findViewById(R.id.num8);
        btn9=(Button)findViewById(R.id.num9);
        add=(Button)findViewById(R.id.add);
        minus=(Button)findViewById(R.id.minus);
        multiply=(Button)findViewById(R.id.multiply);
        divide=(Button)findViewById(R.id.divide);
        sqrt=(Button)findViewById(R.id.sqrt);
        power=(Button)findViewById(R.id.power);
        point=(Button)findViewById(R.id.point);
        clear=(Button)findViewById(R.id.clear);
        equal= (Button) findViewById(R.id.equal);

        //为按钮添加监听器
        btn0.setOnClickListener(listener);
        btn1.setOnClickListener(listener);
        btn2.setOnClickListener(listener);
        btn3.setOnClickListener(listener);
        btn4.setOnClickListener(listener);
        btn5.setOnClickListener(listener);
        btn6.setOnClickListener(listener);
        btn7.setOnClickListener(listener);
        btn8.setOnClickListener(listener);
        btn9.setOnClickListener(listener);
        add.setOnClickListener(listener);
        minus.setOnClickListener(listener);
        multiply.setOnClickListener(listener);
        divide.setOnClickListener(listener);
        sqrt.setOnClickListener(listener);
        power.setOnClickListener(listener);
        point.setOnClickListener(listener);
        clear.setOnClickListener(listener);
        equal.setOnClickListener(listener);


    }
    //设置不同按钮的id的监听器
    private OnClickListener listener = new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //获取两个框
            editText=(EditText)findViewById(R.id.editText1);
            textview=(TextView)findViewById(R.id.textView1);
            Button btn=(Button)v;
            //将数据转换为字符串
            String str=editText.getText().toString();
            try{
                switch (btn.getId()) {
                    case R.id.num0:
                        editText.setText(str + 0);
                        str=editText.getText().toString();
                        textview.setText(str);
                        break;

                    case R.id.point://小数点
                        if (str.indexOf(".")!=-1) {
                            //如果已存在小数点,不做任何操作,并提示错误 If a decimal point already exists, do nothing and prompt for an error
                            Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();;
                        }
                        else {
                            if (str.equals("0")) {
                                //小数点前为0 Zero before the decimal point
                                editText.setText(("0"+".").toString());
                            }
                            else if(str.equals(" ")){
                                //小数点前为空,不做任何操作并提示错误 Empty before the decimal point, do nothing and prompt for an error
                                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();;
                            }
                            else{
                                editText.setText(str+".");
                            }
                        }
                        break;
                    case R.id.clear:
                        if (str.length()>0) {
                            editText.setText(" ");
                            textview.setText(" ");
                        }
                        break;
                    //判断符号进行计算 Judging symbols for calculation
                    case R.id.equal:
                        if (operate=="+") {
                            b=Double.parseDouble(str);
                            textview.setText(a+operate+b+"=");
                            editText.setText((a+b)+"");
                        }
                        else if (operate=="-") {
                            b=Double.parseDouble(str);
                            textview.setText(a+operate+b+"=");
                            editText.setText((a-b)+"");
                        }
                        else if (operate=="×") {
                            b=Double.parseDouble(str);
                            textview.setText(a+operate+b+"=");
                            editText.setText((a*b)+"");
                        }
                        else if (operate=="÷") {
                            b=Double.parseDouble(str);
                            if (b==0) {
                                editText.setText("");
                                //Divisor can't be 0
                                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                            }
                            else {
                                textview.setText(a+operate+b+"=");
                                editText.setText(a/b+"");
                            }
                        }
                        break;
                    case R.id.num1:
                        editText.setText(str + 1);
                        textview.setText(str);
                        break;
                    case R.id.num2:
                        editText.setText(str + 2);
                        textview.setText(str);
                        break;
                    case R.id.num3:
                        editText.setText(str + 3);
                        textview.setText(str);
                        break;
                    case R.id.num4:
                        editText.setText(str + 4);
                        textview.setText(str);
                        break;
                    case R.id.num5:
                        editText.setText(str + 5);
                        textview.setText(str);
                        break;
                    case R.id.num6:
                        editText.setText(str + 6);
                        textview.setText(str);
                        break;
                    case R.id.num7:
                        editText.setText(str + 7);
                        textview.setText(str);
                        break;
                    case R.id.num8:
                        editText.setText(str + 8);
                        textview.setText(str);
                        break;
                    case R.id.num9:
                        editText.setText(str + 9);
                        textview.setText(str);
                        break;
                    case R.id.add:
                        a = Double.parseDouble(str);
                        operate = "+";
                        textview.setText(a + operate);
                        editText.setText("");
                        break;
                    case R.id.minus:
                        operate="-";
                        a=Double.parseDouble(str);
                        editText.setText("");
                        textview.setText(a+operate);
                        break;
                    case R.id.multiply:
                        a=Double.parseDouble(str);
                        operate="×";
                        editText.setText("");
                        textview.setText(a+operate);
                        break;
                    case R.id.divide:
                        a=Double.parseDouble(str);
                        operate="÷";
                        editText.setText("");
                        textview.setText(a+operate);
                        break;
                    case R.id.sqrt:
                        a=Double.parseDouble(str);
                        if (a<0) {
                            //root can't be negative
                            Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
                        }
                        else {
                            editText.setText(Math.sqrt(a)+"");
                            textview.setText("√"+a+"=");
                        }
                        break;
                    case R.id.power:
                        a=Double.parseDouble(str);
                        editText.setText(a*a+"");
                        textview.setText(a+"^2"+"=");
                        break;

                    default:
                        break;
                }

            }catch(Exception e){

            }

        }

    };


}

Activity_main.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:layout_height="match_parent"
    android:layout_weight="10"
    android:orientation="vertical"
    tools:context="com.example.calculatortest.MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2">

        <EditText
            android:id="@+id/editText1"
            android:layout_width="405dp"
            android:layout_height="77dp"
            android:layout_centerInParent="false"
            android:layout_centerVertical="false"
            android:layout_marginRight="-40dp"
            android:background="#ffffff"
            android:ems="10"
            android:inputType=""
            android:singleLine="true"
            android:text="@string/editText1"
            android:textAlignment="textEnd"
            android:textColor="@android:color/tertiary_text_light"
            android:textSize="30sp" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_centerInParent="false"
            android:layout_centerVertical="true"
            android:background="#ffffff"
            android:text=""
            android:textAlignment="viewEnd"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@android:color/tertiary_text_light"
            android:textSize="30sp" />

    </RelativeLayout>

    <androidx.gridlayout.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:padding="18dp"
        app:columnCount="4"
        app:rowCount="5">

        <Button
            android:id="@+id/add"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opAdd"
            android:textSize="25sp" />

        <Button
            android:id="@+id/minus"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opMinus"
            android:textSize="25sp" />

        <Button
            android:id="@+id/multiply"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opMultiply"
            android:textSize="25sp" />

        <Button
            android:id="@+id/divide"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opDivide"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num1"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num1"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num2"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num2"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num3"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num3"
            android:textSize="25sp" />

        <Button
            android:id="@+id/power"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opPower"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num4"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num4"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num5"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num5"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num6"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num6"
            android:textSize="25sp" />

        <Button
            android:id="@+id/sqrt"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opSqrt"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num7"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num7"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num8"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num8"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num9"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num9"
            android:textSize="25sp" />

        <Button
            android:id="@+id/equal"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="114dp"
            android:layout_margin="3dp"
            android:text="@string/opEqual"
            android:textSize="25sp"
            app:layout_rowSpan="2" />

        <Button
            android:id="@+id/clear"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opClear"
            android:textSize="25sp" />

        <Button
            android:id="@+id/num0"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/num0"
            android:textSize="25sp" />

        <Button
            android:id="@+id/point"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:text="@string/opPoint"
            android:textSize="25sp" />
    </androidx.gridlayout.widget.GridLayout>


</LinearLayout>

运行效果图
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是简易计算器实现步骤: 1. 创建一个新的Android Studio项目,并在布局文件中添加一个TextView和多个Button。 2. 在MainActivity.java文件中,定义一个字符串变量来存储用户输入的数字和操作符,并在每个按钮的点击事件中更新该变量。 3. 创建一个名为calculate()的方法,该方法将用户输入的字符串解析为数字和操作符,并执行相应的计算。最后,将结果显示在TextView中。 4. 在每个按钮的点击事件中调用calculate()方法,以便在用户按下“=”按钮时执行计算。 5. 运行应用程序并测试它是否按预期工作。 希望这能帮助到你! ### 回答2: Android Studio 是常用的Android应用程序开发环境,利用该工具可以开发完整的Android应用程序,其中也包括实现简易计算器。下面我们就来介绍如何通过 Android Studio 实现简易计算器。 1.创建新的Android项目:我们打开Android Studio,选择“Start a new Android Studio project”,该选项将指导我们创建一个新的Android项目。 2.设计用户界面:我们需要使用XML文件描述计算器的用户界面,主要包含数字、运算符等键,在这里,我们需要利用Android提供的界面设计工具 -- Android Studio Design View 。 3.编写Java代码:在Android Studio中,Java代码对应着Java类文件,因此我们需要新建一个类文件,将所有的计算逻辑代码编写在其中。 4.添加计算器逻辑:我们需要编写代码,实现基本运算:加、减、乘、除、取余等。 5.添加响应事件:我们需要为计算器中的数字、运算符等键添加响应事件,实现点击后数字和运算符的显示。 6.测试程序:我们需要在模拟器或者真机上测试我们开发的计算器程序,保证其在使用时可以正常运行。 综上所述,通过以上步骤,我们可以利用Android Studio实现一个简单的计算器。编写一个计算器的过程中,需要了解常见的布局,如LinearLayout、RelativeLayout等,并可以利用著名的MVP模式,将View与Presenter分离,提高代码的可读性和可维护性。此外,还需要掌握如何实现适应不同分辨率的布局,保证在各种机型上都能够良好地运行。 ### 回答3: Android Studio 是一款强大的 Android 应用开发软件,可以帮助我们创建各种 Android 应用,包括计算器应用。下面将详细介绍如何利用 Android Studio 实现简易计算器。 第一步:创建项目 在 Android Studio 中点击“Start a new Android Studio project”,选择一个名字和保存路径,接着选择 Empty Activity,点击“Finish”创建项目。 第二步:设计计算器界面 在 activity_main.xml 文件中,我们可以选择布局元素创建界面。在这里,我们使用LinearLayout作为容器,从而创建我们的界面元素。具体的代码如下: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" android:background="@color/cardview_dark_background" android:gravity="right" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="50sp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4" > <Button android:id="@+id/btn_clear" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="C" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> ...... </LinearLayout> </LinearLayout> ``` 这里我们用 LinearLayout 创建一个垂直方向的布局,然后再在垂直布局中用 LinearLayout 创建一个水平方向的布局。在这个水平方向的布局中添加数值、运算符和清除按钮,具体代码如下: ``` <Button android:id="@+id/btn_clear" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="C" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> <TextView android:id="@+id/btn_divide" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:gravity="center" android:text="/" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> <Button android:id="@+id/btn_multiply" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:background="@color/cardview_dark_background" android:text="*" android:textAllCaps="false" android:textAppearance="?android:textAppearanceLarge" android:textColor="@color/white" android:textSize="20sp" /> ...... ``` 第三步:实现计算器逻辑 在 MainActivity 类中实现计算器的逻辑。首先,我们需要定义一个数字输入框(TextView)用来显示操作数,同时在代码中对输入数字和操作符进行处理,并显示结果。 具体代码如下: ``` public class MainActivity extends AppCompatActivity { private TextView tvInput; private String lastOperator = ""; private double operand1 = Double.NaN; private double operand2; private final char ADDITION = '+'; private final char SUBTRACTION = '-'; private final char MULTIPLICATION = '*'; private final char DIVISION = '/'; private final char EQUALS = '='; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvInput = findViewById(R.id.tv_input); tvInput.setText(""); } public void onButtonClick(View view){ Button btn = (Button)view; String str = btn.getText().toString(); if(str.equals("C")){ tvInput.setText(""); lastOperator=""; operand1=Double.NaN; }else if(str.equals("+/-")){ double value = Double.parseDouble(tvInput.getText().toString()); value = -value; tvInput.setText(String.valueOf(value)); }else if(str.equals("%")){ if(lastOperator.equals("") && !tvInput.getText().toString().equals("")){ double value = Double.parseDouble(tvInput.getText().toString()); value = value/100; tvInput.setText(String.valueOf(value)); } }else if(str.equals(".")){ if(lastOperator.equals("") && !tvInput.getText().toString().contains(".")){ tvInput.append("."); } }else if(isOperator(str.charAt(0))){ if(!lastOperator.equals("") && tvInput.getText().toString().equals("")){ return; } if(Double.isNaN(operand1)){ operand1 = Double.parseDouble(tvInput.getText().toString()); }else{ operand2 = Double.parseDouble(tvInput.getText().toString()); switch(lastOperator){ case "+": operand1 = operand1 + operand2; break; case "-": operand1 = operand1 - operand2; break; case "*": operand1 = operand1 * operand2; break; case "/": operand1 = operand1 / operand2; break; case "=": break; } } lastOperator = String.valueOf(str.charAt(0)); tvInput.setText(""); }else if(str.equals("=")){ if(lastOperator.equals("")) return; if(Double.isNaN(operand1)){ operand1 = Double.parseDouble(tvInput.getText().toString()); }else{ operand2 = Double.parseDouble(tvInput.getText().toString()); switch(lastOperator){ case "+": operand1 = operand1 + operand2; break; case "-": operand1 = operand1 - operand2; break; case "*": operand1 = operand1 * operand2; break; case "/": operand1 = operand1 / operand2; break; case "=": break; } } lastOperator = "="; tvInput.setText(String.valueOf(operand1)); operand1 = Double.NaN; }else{ tvInput.append(str); } } public boolean isOperator(char c){ return (c==ADDITION || c==SUBTRACTION || c== MULTIPLICATION || c == DIVISION); } } ``` 在这个代码中,“C”按钮可以清除所有输入,“+/-”按钮可以将数字转换成负数,“%”按钮可以将数字转换成百分数,“.”按钮可以添加小数点,“=”按钮可以计算输入并输出结果。 最后,在 mainifests/AndroidManifest.xml 文件中增加声明,以允许用户在应用内打开横屏模式。 ``` <activity android:name=".MainActivity" android:screenOrientation="sensorLandscape"> </activity> ``` 现在我们已经创建了一个简单的计算器应用程序。当用户在应用中输入一个算术表达式,该程序会自动计算结果并在应用窗口中显示这个结果。当然,这还只是计算器的基本功能,您还可以添加各种其他功能,如科学计算器等等。希望这篇文章能够帮助你了解如何使用 Android Studio实现一个简单的计算器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值