计算器
程序员文章站
2022-03-10 15:47:28
...
Mainactivity.java
package com.example.a18038.myapplication1;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5,
btn_6, btn_7, btn_8, btn_9, btn_equal,
btn_point, btn_clean, btn_del, btn_plus,
btn_minus, btn_multiply, btn_divide,btn_sqrt;
TextView textView;
boolean clear_flag=true;
String firstNumber="";
String operator="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//变量初始化
btn_0 = (Button) findViewById(R.id.btn_0);
btn_1 = (Button) findViewById(R.id.btn_1);
btn_2 = (Button) findViewById(R.id.btn_2);
btn_3 = (Button) findViewById(R.id.btn_3);
btn_4 = (Button) findViewById(R.id.btn_4);
btn_5 = (Button) findViewById(R.id.btn_5);
btn_6 = (Button) findViewById(R.id.btn_6);
btn_7 = (Button) findViewById(R.id.btn_7);
btn_8 = (Button) findViewById(R.id.btn_8);
btn_9 = (Button) findViewById(R.id.btn_9);
btn_point = (Button) findViewById(R.id.btn_point);
btn_clean = (Button) findViewById(R.id.btn_clean);
btn_equal = (Button) findViewById(R.id.btn_equal);
btn_del = (Button) findViewById(R.id.btn_del);
btn_plus = (Button) findViewById(R.id.btn_plus);
btn_minus = (Button) findViewById(R.id.btn_minus);
btn_multiply = (Button) findViewById(R.id.btn_multiply);
btn_divide = (Button) findViewById(R.id.btn_divide);
btn_sqrt = (Button) findViewById(R.id.btn_sqrt);
textView = (TextView) findViewById(R.id.textView);
//注册监听器
btn_0.setOnClickListener(this);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
btn_9.setOnClickListener(this);
btn_equal.setOnClickListener(this);
btn_minus.setOnClickListener(this);
btn_multiply.setOnClickListener(this);
btn_divide.setOnClickListener(this);
btn_sqrt.setOnClickListener(this);
btn_del.setOnClickListener(this);
btn_point.setOnClickListener(this);
btn_plus.setOnClickListener(this);
btn_clean.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String str=textView.getText().toString();
switch (v.getId()){
//清空与删除
case R.id.btn_clean:
clear_flag=true;
textView.setText("0");
operator="";
firstNumber="";
break;
case R.id.btn_del:
if(!clear_flag){
if(str.length()==1){
clear_flag=true;
textView.setText("0");
}
else
textView.setText(str.substring(0, str.length() - 1));
}
break;
//数字键
case R.id.btn_0:
if(!clear_flag)
textView.setText(str+((Button) v).getText());
break;
case R.id.btn_1:
case R.id.btn_2:
case R.id.btn_3:
case R.id.btn_4:
case R.id.btn_5:
case R.id.btn_6:
case R.id.btn_7:
case R.id.btn_8:
case R.id.btn_9:
if(clear_flag){
clear_flag=false;
textView.setText(((Button) v).getText());
}
else
textView.setText(str+((Button) v).getText());
break;
case R.id.btn_point:
if(!str.contains(".")){
clear_flag=false;
textView.setText(str+((Button) v).getText());
}
else if(str.contains("+")||str.contains("-")||str.contains("*")||str.contains("/")){
textView.setText(str+((Button) v).getText());
}
break;
//计算键
case R.id.btn_plus:
case R.id.btn_minus:
case R.id.btn_multiply:
case R.id.btn_divide:
if(operator.equals("")||operator.equals("=")){
firstNumber=str;
textView.setText(firstNumber+((Button) v).getText());
operator=((Button) v).getText().toString();
clear_flag=false;
}
else{
firstNumber=Float.toString(calculate(firstNumber,str,operator));
textView.setText(firstNumber+((Button) v).getText());
clear_flag=false;
operator=((Button) v).getText().toString();
}
break;
case R.id.btn_sqrt:
textView.setText(String.valueOf(Math.sqrt(Double.parseDouble(str))));
clear_flag=true;
break;
case R.id.btn_equal:
if(operator.equals("="))
textView.setText(str);
else if(firstNumber.equals(""))
textView.setText("0");
else{
textView.setText(Float.toString(calculate(firstNumber,str,operator)));
clear_flag=true;
operator="=";
}
break;
}
}
private float calculate(String firstNumber,String secondNumber,String operator){
float first=Float.parseFloat(firstNumber);
float second=Float.parseFloat(secondNumber.substring((secondNumber.indexOf(operator)+1),secondNumber.length()));
float value;
char opera=operator.toCharArray()[0];
switch (opera){
case '+':
value=first+second;
break;
case '-':
value=first-second;
break;
case '*':
value=first*second;
break;
case '/':
if(second==0){
value=0;
}
else{
value=first/second;
}
break;
default:
value=0;
}
return value;
}
}
activity_main.xml
<?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:columnCount="4">
<TextView
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:layout_gravity="center_horizontal"
android:text="计算器"
android:textSize="20dip" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_columnSpan="4"
android:text="0"
android:textAlignment="textEnd"
android:textSize="35dip" />
<Button
android:id="@+id/btn_clean"
android:layout_width="144dp"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="C"
android:textSize="20dip" />
<Button
android:id="@+id/btn_del"
android:layout_width="131dp"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="DEL"
android:textSize="20dip" />
<Button
android:id="@+id/btn_sqrt"
android:layout_width="152dp"
android:layout_height="wrap_content"
android:layout_row="0"
android:text="√"
android:textSize="20dip" />
<Button
android:id="@+id/btn_plus"
android:layout_width="131dp"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="+"
android:textSize="20dip" />
<Button
android:id="@+id/btn_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="1"
android:textSize="20dip" />
<Button
android:id="@+id/btn_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="2"
android:textSize="20dip" />
<Button
android:id="@+id/btn_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="3"
android:textSize="20dip" />
<Button
android:id="@+id/btn_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="-"
android:textSize="20dip" />
<Button
android:id="@+id/btn_4"
android:layout_width="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="4"
android:textSize="20dip" />
<Button
android:id="@+id/btn_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="5"
android:textSize="20dip" />
<Button
android:id="@+id/btn_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="6"
android:textSize="20dip" />
<Button
android:id="@+id/btn_multiply"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="*"
android:textSize="20dip" />
<Button
android:id="@+id/btn_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="7"
android:textSize="20dip" />
<Button
android:id="@+id/btn_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="8"
android:textSize="20dip" />
<Button
android:id="@+id/btn_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="9"
android:textSize="20dip" />
<Button
android:id="@+id/btn_equal"
android:layout_width="152dp"
android:layout_height="96dp"
android:layout_rowSpan="2"
android:text="="
android:textSize="20dip" />
<Button
android:id="@+id/btn_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="."
android:textSize="20dip" />
<Button
android:id="@+id/btn_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="0"
android:textSize="20dip" />
<Button
android:id="@+id/btn_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:text="/"
android:textSize="20dip" />
</GridLayout>
上一篇: 关于ContentResolver的用法