android写一个计算器程序
时间: 2023-12-12 14:04:43 浏览: 71
好的,以下是一个简单的 Android 计算器程序:
1. 首先,在 Android Studio 中创建一个新项目,选择 Empty Activity 模板。
2. 在项目的 layout 文件夹下,创建一个名为 activity_main.xml 的布局文件,用于显示计算器的界面。在这个布局文件中,可以使用 LinearLayout 和 GridLayout 等布局来排列计算器的各个部分,例如数字按钮、运算符按钮和显示屏等。
3. 在 MainActivity.java 文件中,定义一个名为 Calculator 的类,该类包含一个计算方法和一个清空方法,用于进行加、减、乘、除等运算,并将结果显示在屏幕上。
4. 在 MainActivity.java 中,将 Calculator 类与 activity_main.xml 中的按钮和显示屏等控件进行关联,使得用户点击按钮时能够触发相应的运算和显示。
5. 编译和运行项目,即可在模拟器或真机上测试这个计算器程序。
注意:为了更好地学习和理解 Android 开发,建议先学习一些基础知识,例如 Android 布局、事件处理、界面设计和调试技巧等。
相关问题
android写一个计算器程序代码
以下是一个简单的 Android 计算器程序的代码示例,仅供参考:
activity_main.xml 布局文件:
```xml
<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/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:textSize="24sp" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="5"
android:padding="16dp">
<Button
android:id="@+id/button_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="7" />
<Button
android:id="@+id/button_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="8" />
<Button
android:id="@+id/button_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="9" />
<Button
android:id="@+id/button_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="/" />
<Button
android:id="@+id/button_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="4" />
<Button
android:id="@+id/button_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="5" />
<Button
android:id="@+id/button_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="6" />
<Button
android:id="@+id/button_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="*" />
<Button
android:id="@+id/button_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="1" />
<Button
android:id="@+id/button_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="2" />
<Button
android:id="@+id/button_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="3" />
<Button
android:id="@+id/button_minus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="-" />
<Button
android:id="@+id/button_clear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="C" />
<Button
android:id="@+id/button_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="0" />
<Button
android:id="@+id/button_dot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="." />
<Button
android:id="@+id/button_add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="+" />
<Button
android:id="@+id/button_equals"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="=" />
</GridLayout>
</LinearLayout>
```
MainActivity.java 文件:
```java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.math.BigDecimal;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mResultView;
private boolean mIsOperatorClicked = false;
private String mOperator = "";
private BigDecimal mFirstNumber = BigDecimal.ZERO;
private BigDecimal mSecondNumber = BigDecimal.ZERO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取 TextView 对象
mResultView = findViewById(R.id.result);
// 获取数字按钮对象并设置点击事件监听器
findViewById(R.id.button_0).setOnClickListener(this);
findViewById(R.id.button_1).setOnClickListener(this);
findViewById(R.id.button_2).setOnClickListener(this);
findViewById(R.id.button_3).setOnClickListener(this);
findViewById(R.id.button_4).setOnClickListener(this);
findViewById(R.id.button_5).setOnClickListener(this);
findViewById(R.id.button_6).setOnClickListener(this);
findViewById(R.id.button_7).setOnClickListener(this);
findViewById(R.id.button_8).setOnClickListener(this);
findViewById(R.id.button_9).setOnClickListener(this);
// 获取运算符按钮对象并设置点击事件监听器
findViewById(R.id.button_add).setOnClickListener(this);
findViewById(R.id.button_minus).setOnClickListener(this);
findViewById(R.id.button_multiply).setOnClickListener(this);
findViewById(R.id.button_divide).setOnClickListener(this);
// 获取其他按钮对象并设置点击事件监听器
findViewById(R.id.button_clear).setOnClickListener(this);
findViewById(R.id.button_dot).setOnClickListener(this);
findViewById(R.id.button_equals).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_0:
case R.id.button_1:
case R.id.button_2:
case R.id.button_3:
case R.id.button_4:
case R.id.button_5:
case R.id.button_6:
case R.id.button_7:
case R.id.button_8:
case R.id.button_9:
case R.id.button_dot:
// 点击数字或小数点按钮
handleNumberClick(((Button) v).getText().toString());
break;
case R.id.button_add:
case R.id.button_minus:
case R.id.button_multiply:
case R.id.button_divide:
// 点击加、减、乘、除按钮
handleOperatorClick(((Button) v).getText().toString());
break;
case R.id.button_clear:
// 点击清空按钮
handleClearClick();
break;
case R.id.button_equals:
// 点击等于按钮
handleEqualsClick();
break;
}
}
/**
* 处理数字或小数点按钮的点击事件
*/
private void handleNumberClick(String number) {
if (mIsOperatorClicked) {
// 如果之前点击了运算符,则清空显示屏上的内容
mResultView.setText("");
mIsOperatorClicked = false;
}
// 在显示屏上追加数字或小数点
mResultView.append(number);
}
/**
* 处理加、减、乘、除按钮的点击事件
*/
private void handleOperatorClick(String operator) {
if (!mIsOperatorClicked) {
// 如果之前未点击运算符,则将当前显示屏上的数字作为第一个操作数
mFirstNumber = new BigDecimal(mResultView.getText().toString());
mOperator = operator;
mIsOperatorClicked = true;
}
}
/**
* 处理清空按钮的点击事件
*/
private void handleClearClick() {
mResultView.setText("");
mFirstNumber = BigDecimal.ZERO;
mSecondNumber = BigDecimal.ZERO;
mIsOperatorClicked = false;
mOperator = "";
}
/**
* 处理等于按钮的点击事件
*/
private void handleEqualsClick() {
if (mIsOperatorClicked) {
// 如果之前点击了运算符,则不进行任何操作
return;
}
// 将当前显示屏上的数字作为第二个操作数
mSecondNumber = new BigDecimal(mResultView.getText().toString());
BigDecimal result = BigDecimal.ZERO;
switch (mOperator) {
case "+":
result = mFirstNumber.add(mSecondNumber);
break;
case "-":
result = mFirstNumber.subtract(mSecondNumber);
break;
case "*":
result = mFirstNumber.multiply(mSecondNumber);
break;
case "/":
if (mSecondNumber.equals(BigDecimal.ZERO)) {
mResultView.setText("Error");
return;
}
result = mFirstNumber.divide(mSecondNumber, 10, BigDecimal.ROUND_HALF_UP);
break;
}
// 在显示屏上显示结果
mResultView.setText(result.toPlainString());
mFirstNumber = result;
mSecondNumber = BigDecimal.ZERO;
mIsOperatorClicked = false;
mOperator = "";
}
}
```
这个示例只是一个简单的计算器程序,还有很多需要完善和优化的地方,例如输入错误处理、小数点精度控制、界面美化和多语言支持等。希望这个示例能够帮助您入门 Android 开发。
android studio 写一个计算器程序
抱歉,作为AI语言模型,我无法编写代码,但我可以提供一些思路和示例代码,帮助您开始编写计算器程序。
思路:
1. 创建一个布局文件,包含一个文本框和多个按钮,每个按钮代表一个数字或运算符。
2. 在MainActivity.java中,将按钮与相应的操作绑定,例如添加setOnClickListener()方法。
3. 在按钮操作中,使用switch语句根据按钮的id执行相应的操作。
4. 使用文本框来显示计算结果。
示例代码:
activity_main.xml:
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:hint="0"
android:textAlignment="center"
android:textSize="35sp" />
<Button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:text="0"
android:textSize="30sp" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText"
android:layout_marginTop="20dp"
android:layout_toRightOf="@id/btn0"
android:layout_marginLeft="20dp"
android:text="1"
android:textSize="30sp" />
...
<Button
android:id="@+id/btnPlus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn7"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:text="+"
android:textSize="30sp" />
<Button
android:id="@+id/btnEqual"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btnPlus"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:text="="
android:textSize="30sp" />
</RelativeLayout>
```
MainActivity.java:
```
public class MainActivity extends AppCompatActivity {
EditText editText;
Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnPlus, btnMinus, btnMultiply, btnDivide, btnClear, btnEqual;
String currentNumber = "";
String currentOperator = "";
int currentResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
btn0 = findViewById(R.id.btn0);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
btn7 = findViewById(R.id.btn7);
btn8 = findViewById(R.id.btn8);
btn9 = findViewById(R.id.btn9);
btnPlus = findViewById(R.id.btnPlus);
btnMinus = findViewById(R.id.btnMinus);
btnMultiply = findViewById(R.id.btnMultiply);
btnDivide = findViewById(R.id.btnDivide);
btnClear = findViewById(R.id.btnClear);
btnEqual = findViewById(R.id.btnEqual);
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber += "0";
editText.setText(currentNumber);
}
});
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber += "1";
editText.setText(currentNumber);
}
});
...
btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentOperator = "+";
currentResult = Integer.parseInt(currentNumber);
currentNumber = "";
}
});
btnEqual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int secondNumber = Integer.parseInt(currentNumber);
int result = 0;
switch (currentOperator) {
case "+":
result = currentResult + secondNumber;
break;
case "-":
result = currentResult - secondNumber;
break;
case "*":
result = currentResult * secondNumber;
break;
case "/":
result = currentResult / secondNumber;
break;
}
editText.setText(String.valueOf(result));
currentNumber = String.valueOf(result);
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber = "";
currentOperator = "";
currentResult = 0;
editText.setText("0");
}
});
}
}
```
这是一个简单的计算器程序,支持加、减、乘、除四种基本运算,以及清除和计算结果。您可以根据需要添加更多的功能。