android多功能计算器
时间: 2023-06-30 14:11:12 浏览: 77
好的,下面是一个简单的Android多功能计算器的代码和布局文件供参考。
布局文件(calculator_layout.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/tv_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp" />
<!-- 操作区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="清除" />
<Button
android:id="@+id/btn_del"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除" />
<Button
android:id="@+id/btn_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/" />
<Button
android:id="@+id/btn_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/btn_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8" />
<Button
android:id="@+id/btn_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9" />
<Button
android:id="@+id/btn_minus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4" />
<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5" />
<Button
android:id="@+id/btn_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6" />
<Button
android:id="@+id/btn_plus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2" />
<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3" />
<Button
android:id="@+id/btn_equal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="=" />
</LinearLayout>
<Button
android:id="@+id/btn_0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="0" />
</LinearLayout>
```
Java代码(CalculatorActivity.java):
```java
public class CalculatorActivity extends AppCompatActivity {
private TextView tvDisplay;
private StringBuilder sb = new StringBuilder();
private boolean isResult = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator_layout);
tvDisplay = findViewById(R.id.tv_display);
findViewById(R.id.btn_clear).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.setLength(0);
tvDisplay.setText("");
}
});
findViewById(R.id.btn_del).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
tvDisplay.setText(sb.toString());
}
}
});
findViewById(R.id.btn_divide).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
sb.append("/");
tvDisplay.setText(sb.toString());
}
}
});
findViewById(R.id.btn_multiply).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
sb.append("*");
tvDisplay.setText(sb.toString());
}
}
});
findViewById(R.id.btn_minus).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
sb.append("-");
tvDisplay.setText(sb.toString());
}
}
});
findViewById(R.id.btn_plus).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
sb.append("+");
tvDisplay.setText(sb.toString());
}
}
});
findViewById(R.id.btn_equal).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0) {
try {
String expression = sb.toString();
Expression expr = new ExpressionBuilder(expression).build();
double result = expr.evaluate();
tvDisplay.setText(String.valueOf(result));
sb.setLength(0);
sb.append(result);
isResult = true;
} catch (Exception e) {
Toast.makeText(CalculatorActivity.this, "表达式错误", Toast.LENGTH_SHORT).show();
}
}
}
});
findViewById(R.id.btn_0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sb.length() > 0 || isResult) {
sb.append("0");
tvDisplay.setText(sb.toString());
isResult = false;
}
}
});
findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("1");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("2");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("3");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("4");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("5");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("6");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_7).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("7");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_8).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("8");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
findViewById(R.id.btn_9).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sb.append("9");
tvDisplay.setText(sb.toString());
isResult = false;
}
});
}
}
```
这个简单的多功能计算器支持加、减、乘、除四则运算,使用了第三方库expr4j来计算表达式的值。用户可以点击数字按钮输入数字和运算符,也可以使用清除和删除按钮来清空或删除输入的内容。
阅读全文