android - 我的计算器应用程序正在关闭按钮双击
问题描述
我运行了一个简单的计算器程序,但程序有很多错误.. 应用程序只是关闭,按钮有时无法正常工作
{
btClr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtInput.setText(null);
txtOutput.setText(null);
}
});
所有其他数字按钮的代码
bt0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtInput.setText((txtInput.getText() + "0"));
}
});
对于函数,类似其他 sub, div, mul
btPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
m1 = Double.parseDouble((txtInput.getText() + ""));
fAdd = true;
txtInput.setText(null);
}
});
点击时的最终相等函数
btEql.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
m2 = Double.parseDouble(txtInput.getText() + "");
if (fAdd){
txtOutput.setText((m1 + m2 + ""));
fAdd = false;
}
if (fSub){
txtOutput.setText((m1 - m2 + ""));
fSub = false;
}
if (fMul){
txtOutput.setText((m1 * m2 + ""));
fMul = false;
}
if (fDiv){
txtOutput.setText((m1 / m2 + ""));
fDiv = false;
}
if (fPercent){
txtOutput.setText((m1 % m2 + ""));
fPercent = false;
}
}
});
}
}
而且我的百分比功能无法正常工作。请帮助,无法解决此问题
解决方案
你需要改进一些代码
不要在 setText 中设置空值
txtInput.setText(null);
用。。。来代替
txtInput.setText("");
在访问/解析之前检查 null
m1 = Double.parseDouble((txtInput.getText() + ""));
用。。。来代替
if(txtInput.getText() != null){ //Do your work }
如果你想找到一个百分比,你可以使用另一种方式
result = Math.round ((m1/ m2) * 100);
推荐阅读
- terraform - Terraform 模板文件:错误:无法渲染:
:16,32-33:插值表达式后的额外字符; - azure-functions - 每月第 5 个工作日的 TimeTrigger - 计划的 Web 作业 Azure
- url - 可以使用合并域的动态超链接吗?
- php - KeyPress Enter 上的下一个焦点输入字段
- javascript - 将新功能分配给 ng-click 刷新后恢复
- c - 登录时没有匹配的二维字符串数组
- android - 为什么 JavaScript v8 引擎设计为每个进程只能初始化一次?
- python - 将 Python 转换为 R 时如何正确设置参数?
- javascript - Vue-router路由到错误的页面,链接必须在路径前添加'#'
- angular - 未收到应用程序的前台通知(Angular 和 NestJs)