android studio使用Java实现计算器
时间: 2023-05-24 14:04:39 浏览: 157
步骤如下:
1. 新建一个Android Studio项目,取名为Calculator,选择Empty Activity。
2. 打开layout文件夹下的activity_main.xml,将textview标签中的android:text属性值改为0。
3. 在layout中添加一个TableLayout,用于排列按钮。
```
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</TableLayout>
```
4. 添加一个布局文件,用于显示计算器的表达式和结果。在res/layout目录下创建一个新的layout布局文件(例如: result_view.xml),将以下代码添加到文件中:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/result_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/expression"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:textSize="20sp"/>
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:textSize="25sp"/>
</LinearLayout>
```
5. 在MainActivity.java中,定义数值输入和计算按钮的二维数组,以及设置Button点击事件监听器。在onCreate()方法中初始化布局、设置显示结果的TextView,代码如下:
```
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private final String[][] buttons = {
{"7", "8", "9", "+"},
{"4", "5", "6", "-"},
{"1", "2", "3", "*"},
{"0", ".", "=", "/"}
};
private TextView expressionView;
private TextView resultView;
private String operator = "";
private double num1 = 0;
private double num2 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化TextView
expressionView = findViewById(R.id.expression);
resultView = findViewById(R.id.result);
//将二维数组中的按钮添加到表格中
TableLayout tableLayout = findViewById(R.id.layout);
for(int row = 0; row < buttons.length; row++) {
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.MATCH_PARENT,
1.0f
));
for(int col = 0; col < buttons[row].length; col++) {
Button button = new Button(this);
button.setText(buttons[row][col]);
button.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.MATCH_PARENT,
1.0f
));
button.setOnClickListener(this);
tableRow.addView(button);
}
tableLayout.addView(tableRow);
}
}
@Override
public void onClick(View v) {
Button button = (Button) v;
String buttonText = button.getText().toString();
String resultText = resultView.getText().toString();
switch(buttonText) {
case "+": //加号
case "-": //减号
case "*": //乘号
case "/": //除号
operator = buttonText;
num1 = Double.parseDouble(resultText);
expressionView.append(buttonText);
resultView.setText("");
break;
case ".": //小数点
if(!resultText.contains(".")) {
resultText = resultText + ".";
resultView.setText(resultText);
}
break;
case "=": //等于号
if(!operator.equals("")) {
num2 = Double.parseDouble(resultText);
double result = 0;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if(num2 == 0) {
resultView.setText("除数不能为0");
return;
} else {
result = num1 / num2;
}
break;
}
resultView.setText(String.valueOf(result));
expressionView.append("=" + String.valueOf(result) + "\n");
operator = "";
}
break;
default:
if(resultText.equals("0")) {
resultView.setText(buttonText);
} else {
resultView.append(buttonText);
}
break;
}
}
}
```
6. 运行应用程序,在模拟器或真机上测试计算器,并且可以对其进行调整。
阅读全文