Android Studio实现计算器代码
时间: 2023-05-27 16:02:28 浏览: 100
这是一个简单的Android Studio计算器的示例代码:
MainActivity.java
```
package com.example.calculator;
import androidx.appcompat.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 {
private TextView mResultTV;
private Button mOneBtn, mTwoBtn, mThreeBtn, mFourBtn, mFiveBtn, mSixBtn, mSevenBtn, mEightBtn, mNineBtn, mZeroBtn;
private Button mAddBtn, mSubtractBtn, mMultiplyBtn, mDivideBtn, mClearBtn, mEqualsBtn;
private String mNumOne = "";
private String mNumTwo = "";
private String mOperator = "";
private String mResult = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize views
mResultTV = findViewById(R.id.result_tv);
mOneBtn = findViewById(R.id.one_btn);
mTwoBtn = findViewById(R.id.two_btn);
mThreeBtn = findViewById(R.id.three_btn);
mFourBtn = findViewById(R.id.four_btn);
mFiveBtn = findViewById(R.id.five_btn);
mSixBtn = findViewById(R.id.six_btn);
mSevenBtn = findViewById(R.id.seven_btn);
mEightBtn = findViewById(R.id.eight_btn);
mNineBtn = findViewById(R.id.nine_btn);
mZeroBtn = findViewById(R.id.zero_btn);
mAddBtn = findViewById(R.id.add_btn);
mSubtractBtn = findViewById(R.id.subtract_btn);
mMultiplyBtn = findViewById(R.id.multiply_btn);
mDivideBtn = findViewById(R.id.divide_btn);
mClearBtn = findViewById(R.id.clear_btn);
mEqualsBtn = findViewById(R.id.equals_btn);
// set listeners
mOneBtn.setOnClickListener(this);
mTwoBtn.setOnClickListener(this);
mThreeBtn.setOnClickListener(this);
mFourBtn.setOnClickListener(this);
mFiveBtn.setOnClickListener(this);
mSixBtn.setOnClickListener(this);
mSevenBtn.setOnClickListener(this);
mEightBtn.setOnClickListener(this);
mNineBtn.setOnClickListener(this);
mZeroBtn.setOnClickListener(this);
mAddBtn.setOnClickListener(this);
mSubtractBtn.setOnClickListener(this);
mMultiplyBtn.setOnClickListener(this);
mDivideBtn.setOnClickListener(this);
mClearBtn.setOnClickListener(this);
mEqualsBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.one_btn:
updateNum("1");
break;
case R.id.two_btn:
updateNum("2");
break;
case R.id.three_btn:
updateNum("3");
break;
case R.id.four_btn:
updateNum("4");
break;
case R.id.five_btn:
updateNum("5");
break;
case R.id.six_btn:
updateNum("6");
break;
case R.id.seven_btn:
updateNum("7");
break;
case R.id.eight_btn:
updateNum("8");
break;
case R.id.nine_btn:
updateNum("9");
break;
case R.id.zero_btn:
updateNum("0");
break;
case R.id.add_btn:
setOperator("+");
break;
case R.id.subtract_btn:
setOperator("-");
break;
case R.id.multiply_btn:
setOperator("*");
break;
case R.id.divide_btn:
setOperator("/");
break;
case R.id.clear_btn:
clear();
break;
case R.id.equals_btn:
calculate();
break;
}
}
private void updateNum(String num) {
if (mOperator.isEmpty()) {
mNumOne += num;
mResultTV.setText(mNumOne);
} else {
mNumTwo += num;
mResultTV.setText(mNumTwo);
}
}
private void setOperator(String operator) {
if (!mNumOne.isEmpty() && mNumTwo.isEmpty()) {
mOperator = operator;
mResultTV.setText("");
} else if (!mNumOne.isEmpty() && !mNumTwo.isEmpty()) {
calculate();
mOperator = operator;
mNumTwo = "";
}
}
private void clear() {
mNumOne = "";
mNumTwo = "";
mOperator = "";
mResultTV.setText("");
}
private void calculate() {
if (!mNumOne.isEmpty() && !mNumTwo.isEmpty() && !mOperator.isEmpty()) {
double numOne = Double.parseDouble(mNumOne);
double numTwo = Double.parseDouble(mNumTwo);
double result = 0;
switch (mOperator) {
case "+":
result = numOne + numTwo;
break;
case "-":
result = numOne - numTwo;
break;
case "*":
result = numOne * numTwo;
break;
case "/":
result = numOne / numTwo;
break;
}
mResult = String.valueOf(result);
mResultTV.setText(mResult);
mNumOne = mResult;
mNumTwo = "";
mOperator = "";
}
}
}
```
activity_main.xml
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/result_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="24sp"
android:textAlignment="textEnd"
android:text=""/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/seven_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"/>
<Button
android:id="@+id/eight_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"/>
<Button
android:id="@+id/nine_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"/>
<Button
android:id="@+id/add_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/four_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"/>
<Button
android:id="@+id/five_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"/>
<Button
android:id="@+id/six_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"/>
<Button
android:id="@+id/subtract_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/one_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"/>
<Button
android:id="@+id/two_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"/>
<Button
android:id="@+id/three_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"/>
<Button
android:id="@+id/multiply_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/zero_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"/>
<Button
android:id="@+id/clear_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="C"/>
<Button
android:id="@+id/equals_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="/>
<Button
android:id="@+id/divide_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"/>
</LinearLayout>
</LinearLayout>
```
这个计算器只支持整数和小数的四则运算,如果需要增加更多功能,请根据需求添加。