首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算器碰撞

计算器碰撞
EN

Stack Overflow用户
提问于 2018-05-27 14:39:17
回答 2查看 57关注 0票数 0

当我按“计算”键时,我试图创建一个计算考试笔记的应用程序,没有任何小数,它显示答案,但是如果有小数,它就会崩溃。

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

    TextView Result;
    EditText Number1 , Number2, Number3, Number4, Number5, Number6;
    Button Calculate;

    float result_num;
    int num1,num2,num3,num4,num5,num6;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Result = (TextView)findViewById(R.id.Result);

        Number1 = (EditText)findViewById(R.id.Number1);
        Number2 = (EditText)findViewById(R.id.Number2);
        Number3 = (EditText)findViewById(R.id.Number3);
        Number4 = (EditText)findViewById(R.id.Number4);
        Number5 = (EditText)findViewById(R.id.Number5);
        Number6 = (EditText)findViewById(R.id.Number6);

        Calculate = (Button)findViewById(R.id.Calculate);

        Calculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(Number1.getText().toString());
                num2 = Integer.parseInt(Number2.getText().toString());
                num3 = Integer.parseInt(Number3.getText().toString());
                num4 = Integer.parseInt(Number4.getText().toString());
                num5 = Integer.parseInt(Number5.getText().toString());
                num6 = Integer.parseInt(Number6.getText().toString());

                result_num = ((((num1 + num2 + num3 + num4) / 4) * 20) / 100) + ((((num5 + num6) / 2) * 80) / 100);
                Result.setText(String.valueOf(result_num));

            }
        });
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-27 15:13:57

使用浮动而不是整数。整数无法用小数点解析(并对)数字进行操作。

添加:这是错误检查代码:

代码语言:javascript
复制
try {
  num1 = Double.parseDouble(Number1.getText().toString());
  num2 = Double.parseDouble(Number2.getText().toString());
  ...
}
catch (NumberFormatException ex) {
  Toast.makeText(this, "Error: " + ex.getMessage(), Toast.LENGTH_LONG).show();
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-27 15:14:37

基本上,您试图在下面的代码中将DoubleFloat值解析为Integer类型:

代码语言:javascript
复制
Integer.parseInt(Number1.getText().toString());

您的代码不适用于十进制值。但您可以将其更改为双值,如下所示:

代码语言:javascript
复制
double value1 = Double.parseDouble(Number1.getText().toString());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50553256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档