public class MainActivity extends AppCompatActivity { private TextView resultText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resultText = findViewById(R.id.result_text); findViewById(R.id.btn_0).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("0"); } }); findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("1"); } }); // 添加其他数字按钮的 onClickListener findViewById(R.id.btn_add).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("+"); } }); findViewById(R.id.btn_subtract).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { appendText("-"); } }); // 添加其他运算符按钮的 onClickListener findViewById(R.id.btn_clear).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearText(); } }); findViewById(R.id.btn_equals).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { calculate(); } }); } private void appendText(String text) { resultText.append(text); } private void clearText() { resultText.setText(""); } private void calculate() { try { String expression = resultText.getText().toString(); Expression e = new ExpressionBuilder(expression).build(); double result = e.evaluate(); resultText.setText(Double.toString(result)); } catch (IllegalArgumentException ex) { resultText.setText("Error"); } }}
时间: 2023-06-18 10:08:47 浏览: 207
这是一个简单的计算器应用程序的主要代码。它使用了一个第三方库,即“expr-eval”,来解析算术表达式并计算结果。在 onCreate() 方法中,它设置了数字和运算符按钮的 onClickListener,并分别调用了 appendText()、clearText() 和 calculate() 方法。在 appendText() 方法中,它向结果文本框中添加新的字符。在 clearText() 方法中,它简单地将结果文本框的内容设置为空。在 calculate() 方法中,它首先获取结果文本框中的表达式,然后使用 ExpressionBuilder 类构建一个 Expression 对象,该对象表示表达式的树形结构。最后,它调用 evaluate() 方法来计算表达式的结果,并将结果设置为结果文本框的内容。如果表达式无效,则 catch 语句将捕获 IllegalArgumentException 异常,并将结果文本框的内容设置为“Error”。
相关问题
使用CheckBox\Btton\TextView\Toast完成多选按钮
好的,您想要实现多选按钮,可以使用 `CheckBox` 控件,当用户点击 `Button` 按钮时,检查哪些 `CheckBox` 被选中,并将选中的文字显示在 `TextView` 控件中,最后使用 `Toast` 提示用户选择成功。
以下是一个简单的实现示例:
```java
public class MainActivity extends AppCompatActivity {
private CheckBox checkBox1, checkBox2, checkBox3;
private Button confirmBtn;
private TextView resultText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox1 = findViewById(R.id.checkbox1);
checkBox2 = findViewById(R.id.checkbox2);
checkBox3 = findViewById(R.id.checkbox3);
confirmBtn = findViewById(R.id.btn_confirm);
resultText = findViewById(R.id.text_result);
confirmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringBuilder sb = new StringBuilder("选中了:");
if (checkBox1.isChecked()) {
sb.append("选项1 ");
}
if (checkBox2.isChecked()) {
sb.append("选项2 ");
}
if (checkBox3.isChecked()) {
sb.append("选项3 ");
}
if (sb.toString().equals("选中了:")) {
sb.append("无");
}
resultText.setText(sb.toString());
Toast.makeText(MainActivity.this, "选择成功", Toast.LENGTH_SHORT).show();
}
});
}
}
```
在上述代码中,我们首先获取了三个 `CheckBox` 控件、一个 `Button` 按钮和一个 `TextView` 控件。然后,在 `confirmBtn` 的监听器中,我们检查哪些 `CheckBox` 被选中,将选中的文字显示在 `resultText` 中,并使用 `Toast` 提示用户选择成功。需要注意的是,如果用户没有选择任何选项,我们需要在结果中显示“无”。
最后,这个多选按钮的实现就完成了。您可以根据自己的需求对代码进行修改和优化。
用Android studio做一个计算器
好的,下面是使用 Android Studio 构建一个简单的计算器的步骤:
1. 打开 Android Studio,创建一个新项目,选择 Empty Activity 模板。
2. 在 app/res/layout 目录下创建一个新的 XML 布局文件,命名为 activity_main.xml。在该布局文件中添加一个 TextView 和多个 Button,其中 TextView 用于显示计算结果,Button 用于输入数字和运算符。
3. 在 MainActivity.java 中添加对 TextView 和 Button 的引用,并为每个 Button 添加一个 onClickListener,用于处理用户输入和计算逻辑。
4. 在 onClickListener 中,根据用户输入的数字和运算符进行计算,然后更新 TextView 的内容以显示计算结果。
5. 至此,一个简单的计算器应该已经构建完成了。
下面是一个简单的 MainActivity.java 示例代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView resultText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultText = findViewById(R.id.result_text);
findViewById(R.id.btn_0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendText("0");
}
});
findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendText("1");
}
});
// 添加其他数字按钮的 onClickListener
findViewById(R.id.btn_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendText("+");
}
});
findViewById(R.id.btn_subtract).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendText("-");
}
});
// 添加其他运算符按钮的 onClickListener
findViewById(R.id.btn_clear).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearText();
}
});
findViewById(R.id.btn_equals).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculate();
}
});
}
private void appendText(String text) {
resultText.append(text);
}
private void clearText() {
resultText.setText("");
}
private void calculate() {
try {
String expression = resultText.getText().toString();
Expression e = new ExpressionBuilder(expression).build();
double result = e.evaluate();
resultText.setText(Double.toString(result));
} catch (IllegalArgumentException ex) {
resultText.setText("Error");
}
}
}
```
其中,我们使用了一个叫做 exp4j 的库来进行计算,需要在 app/build.gradle 中添加以下依赖:
```groovy
implementation 'net.objecthunter:exp4j:0.4.8'
```
这个库可以将用户输入的算式字符串转换为可计算的表达式,并返回计算结果。具体使用方法可以参考 exp4j 的官方文档。
希望这个示例代码能够帮助你构建一个简单的计算器。
阅读全文