安卓 在文本框中输入一个加法算式,计算结果并显示结果显示在文本框中 代码详细 Java代码
时间: 2024-09-28 20:10:47 浏览: 31
在Android中,你可以创建一个简单的用户界面,包含一个EditText用于输入算式,一个TextView用于显示结果,然后通过TextWatcher监听输入变化,实时计算并更新结果。以下是一个基础的示例代码:
```java
import android.os.Bundle;
import android.text.TextWatcher;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText inputEditText;
private TextView resultTextView;
private Button calculateButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputEditText = findViewById(R.id.input_text);
resultTextView = findViewById(R.id.result_text);
calculateButton = findViewById(R.id.calculate_button);
// 添加TextWatcher监听输入
inputEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// 这里不做处理
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 清空之前的计算结果
resultTextView.setText("");
String expression = s.toString();
if (expression.contains("+")) { // 判断是否为加法
try {
double result = eval(expression); // 使用eval函数计算表达式的值
resultTextView.setText(String.format("%.2f", result));
} catch (NumberFormatException e) {
resultTextView.setText("无效的算式");
}
}
}
@Override
public void afterTextChanged(Editable s) {
// 当输入结束后,再次检查并计算
onTextChanged(s, 0, s.length(), 0);
}
});
calculateButton.setOnClickListener(v -> {
// 直接触发输入监听事件,不需要用户点击
onTextChanged(inputEditText.getText(), 0, inputEditText.getText().length(), 0);
});
}
// 使用JavaScript引擎计算字符串表达式的值
private static double eval(String expression) {
return Double.parseDouble(new ScriptEngineManager().getEngineByName("JavaScript").eval(expression).toString());
}
}
```
在这个例子中,我们假设已经添加了一个XML布局文件(activity_main.xml),里面包含了inputEditText、resultTextView和calculateButton控件,并设置了对应的ID。注意,`eval()`方法使用了Java的ScriptEngineManager,它需要Javax.script库支持,如果项目中还没有引入这个库,需要添加依赖。
阅读全文