四则运算+平方开方简易计算器
学渣一枚,在学习其他博主方法的基础上进行了简单的布局修改和实现平方功能。
先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>
运行效果图