android studio 无优先级可以连续进行加减乘除的计算器代码
时间: 2023-11-02 10:06:45 浏览: 144
android 计算器 demo 可以实现连续加减乘除运算
5星 · 资源好评率100%
以下是一个简单的 Android Studio 计算器应用程序,可以进行加减乘除操作:
1. 首先,在布局文件中创建一个用于显示输入和计算结果的 TextView:
```
<TextView
android:id="@+id/resultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textSize="24sp"
android:textAlignment="center" />
```
2. 然后,在布局文件中创建一个包含所有数字和操作符按钮的 GridLayout。在 GridLayout 中,每个按钮都具有相同的布局参数,以便它们可以平均分布:
```
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rowCount="5"
android:columnCount="4"
android:layout_marginTop="16dp">
<Button
android:id="@+id/button7"
android:text="7"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button8"
android:text="8"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button9"
android:text="9"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonDivide"
android:text="/"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button4"
android:text="4"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button5"
android:text="5"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button6"
android:text="6"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonMultiply"
android:text="*"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:text="1"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button2"
android:text="2"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button3"
android:text="3"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonMinus"
android:text="-"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button0"
android:text="0"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2" />
<Button
android:id="@+id/buttonDecimal"
android:text="."
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonPlus"
android:text="+"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonClear"
android:text="C"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/buttonEquals"
android:text="="
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnSpan="2" />
</GridLayout>
```
3. 在代码中,获取 TextView 和所有按钮的引用,并将每个数字和操作符按钮的 OnClickListener 设置为相同的匿名内部类。在这个类中,我们将按钮上的文本附加到 TextView 的文本末尾,以便构建输入。最后,我们通过计算输入文本的值并将其设置为 TextView 的文本来处理 Equals 按钮的点击。
```
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.resultTextView);
Button button0 = findViewById(R.id.button0);
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);
Button button5 = findViewById(R.id.button5);
Button button6 = findViewById(R.id.button6);
Button button7 = findViewById(R.id.button7);
Button button8 = findViewById(R.id.button8);
Button button9 = findViewById(R.id.button9);
Button buttonDecimal = findViewById(R.id.buttonDecimal);
Button buttonClear = findViewById(R.id.buttonClear);
Button buttonPlus = findViewById(R.id.buttonPlus);
Button buttonMinus = findViewById(R.id.buttonMinus);
Button buttonMultiply = findViewById(R.id.buttonMultiply);
Button buttonDivide = findViewById(R.id.buttonDivide);
Button buttonEquals = findViewById(R.id.buttonEquals);
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = resultTextView.getText().toString();
switch (view.getId()) {
case R.id.button0:
case R.id.button1:
case R.id.button2:
case R.id.button3:
case R.id.button4:
case R.id.button5:
case R.id.button6:
case R.id.button7:
case R.id.button8:
case R.id.button9:
case R.id.buttonDecimal:
text += ((Button) view).getText().toString();
break;
case R.id.buttonClear:
text = "";
break;
case R.id.buttonPlus:
case R.id.buttonMinus:
case R.id.buttonMultiply:
case R.id.buttonDivide:
text += " " + ((Button) view).getText().toString() + " ";
break;
case R.id.buttonEquals:
text = evaluate(text);
break;
}
resultTextView.setText(text);
}
};
button0.setOnClickListener(onClickListener);
button1.setOnClickListener(onClickListener);
button2.setOnClickListener(onClickListener);
button3.setOnClickListener(onClickListener);
button4.setOnClickListener(onClickListener);
button5.setOnClickListener(onClickListener);
button6.setOnClickListener(onClickListener);
button7.setOnClickListener(onClickListener);
button8.setOnClickListener(onClickListener);
button9.setOnClickListener(onClickListener);
buttonDecimal.setOnClickListener(onClickListener);
buttonClear.setOnClickListener(onClickListener);
buttonPlus.setOnClickListener(onClickListener);
buttonMinus.setOnClickListener(onClickListener);
buttonMultiply.setOnClickListener(onClickListener);
buttonDivide.setOnClickListener(onClickListener);
buttonEquals.setOnClickListener(onClickListener);
}
private String evaluate(String expression) {
String result = "";
try {
result = new ExpressionBuilder(expression).build().evaluate().toString();
} catch (Exception e) {
result = "Error";
}
return result;
}
}
```
4. 最后,我们使用第三方库 MathExpr 来解析输入文本并计算其值。在 build.gradle 文件中添加以下依赖项:
```
implementation 'com.udojava:MathExpr:0.3.4'
```
现在,您可以使用此简单的计算器应用程序进行基本的加减乘除操作。
阅读全文