在android studio中制作没有优先级的计算器
时间: 2023-11-24 08:10:59 浏览: 43
制作一个简单的没有优先级的计算器可以分为以下几个步骤:
1. 创建一个新的Android项目。
2. 在布局文件中添加一个EditText来显示计算结果,以及多个Button来输入数字和运算符。
3. 在MainActivity中获取EditText和所有Button的引用,并为每个Button设置一个单击事件侦听器。
4. 在单击事件侦听器中获取Button的文本,将其附加到EditText的末尾,并根据需要执行运算。
5. 实现计算逻辑,当用户单击等号时计算EditText中的表达式并将结果显示在EditText中。
下面是一个简单的示例代码:
activity_main.xml:
```xml
<?xml version="1.0" encoding="utf-8"?>
<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/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="0"
android:gravity="end"
android:textSize="24sp"
android:padding="16dp"/>
<LinearLayout
android:layout_below="@id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/num_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:layout_weight="1"/>
<Button
android:id="@+id/num_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="1"/>
<Button
android:id="@+id/num_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="1"/>
<Button
android:id="@+id/op_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_below="@id/num_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/num_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:layout_weight="1"/>
<Button
android:id="@+id/num_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:layout_weight="1"/>
<Button
android:id="@+id/num_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
android:layout_weight="1"/>
<Button
android:id="@+id/op_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_below="@id/num_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/num_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
android:layout_weight="1"/>
<Button
android:id="@+id/num_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:layout_weight="1"/>
<Button
android:id="@+id/num_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:layout_weight="1"/>
<Button
android:id="@+id/op_mul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_below="@id/num_7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/op_clr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:layout_weight="1"/>
<Button
android:id="@+id/num_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_weight="1"/>
<Button
android:id="@+id/op_eq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="="
android:layout_weight="1"/>
<Button
android:id="@+id/op_div"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:layout_weight="1"/>
</LinearLayout>
</RelativeLayout>
```
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private EditText result;
private Button num_0, num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9;
private Button op_add, op_sub, op_mul, op_div, op_clr, op_eq;
private boolean isNewOp = true;
private float num1 = 0, num2 = 0, resultValue = 0;
private String op = "+";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = findViewById(R.id.result);
num_0 = findViewById(R.id.num_0);
num_1 = findViewById(R.id.num_1);
num_2 = findViewById(R.id.num_2);
num_3 = findViewById(R.id.num_3);
num_4 = findViewById(R.id.num_4);
num_5 = findViewById(R.id.num_5);
num_6 = findViewById(R.id.num_6);
num_7 = findViewById(R.id.num_7);
num_8 = findViewById(R.id.num_8);
num_9 = findViewById(R.id.num_9);
op_add = findViewById(R.id.op_add);
op_sub = findViewById(R.id.op_sub);
op_mul = findViewById(R.id.op_mul);
op_div = findViewById(R.id.op_div);
op_clr = findViewById(R.id.op_clr);
op_eq = findViewById(R.id.op_eq);
View.OnClickListener numListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String digit = ((Button)v).getText().toString();
if (isNewOp) {
result.setText(digit);
isNewOp = false;
} else {
result.append(digit);
}
}
};
num_0.setOnClickListener(numListener);
num_1.setOnClickListener(numListener);
num_2.setOnClickListener(numListener);
num_3.setOnClickListener(numListener);
num_4.setOnClickListener(numListener);
num_5.setOnClickListener(numListener);
num_6.setOnClickListener(numListener);
num_7.setOnClickListener(numListener);
num_8.setOnClickListener(numListener);
num_9.setOnClickListener(numListener);
View.OnClickListener opListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String operator = ((Button)v).getText().toString();
if (!isNewOp) {
num2 = Float.parseFloat(result.getText().toString());
switch (op) {
case "+":
resultValue = num1 + num2;
break;
case "-":
resultValue = num1 - num2;
break;
case "*":
resultValue = num1 * num2;
break;
case "/":
resultValue = num1 / num2;
break;
}
result.setText(String.valueOf(resultValue));
num1 = resultValue;
op = operator;
}
isNewOp = true;
}
};
op_add.setOnClickListener(opListener);
op_sub.setOnClickListener(opListener);
op_mul.setOnClickListener(opListener);
op_div.setOnClickListener(opListener);
op_clr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
result.setText("");
isNewOp = true;
num1 = 0;
num2 = 0;
resultValue = 0;
op = "+";
}
});
op_eq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isNewOp) {
num2 = Float.parseFloat(result.getText().toString());
switch (op) {
case "+":
resultValue = num1 + num2;
break;
case "-":
resultValue = num1 - num2;
break;
case "*":
resultValue = num1 * num2;
break;
case "/":
resultValue = num1 / num2;
break;
}
result.setText(String.valueOf(resultValue));
num1 = resultValue;
}
isNewOp = true;
}
});
}
}
```
这样就完成了一个简单的没有优先级的计算器。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)