接受浮点值的计算器

时间:2018-12-10 17:08:50

标签: android floating-point double calculator

我目前正在学习使用Android Studios,但是我很困。 我正在做的练习是使用+,-,/按钮创建一个计算器。我已经完成了计算器的工作,除了一个实例,我已经开始使用它了。

每当我输入一个浮点数时,即使只有一个小数,程序也会崩溃。在尝试除以零时,我也遇到了这种情况,我通过用try和catch包围代码来解决了这个问题。

但是,我对使小数有效的工作一无所知。如果您能看一下我的代码并帮助解决此问题,我将不胜感激。我的程序包含一个主要的Java类和一个主要的xml_class。我将它们张贴在下面:

MainActivity.java:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements 
View.OnClickListener {
    private Button btnAdd,btnSubtract,btnDivide,btnMultiply;
    private TextView tvresult;
    private EditText etfirst, etsecond;

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

private void init() {
    btnAdd =(Button) findViewById(R.id.btnAdd);
    btnSubtract = (Button) findViewById(R.id.btnSubtract);
    btnDivide = (Button) findViewById(R.id.btnDivide);
    btnMultiply = (Button) findViewById(R.id.btnMultiply);
    etfirst = (EditText) findViewById(R.id.etFirstNumber);
    etsecond = (EditText) findViewById(R.id.etSecondNumber);
    tvresult = (TextView) findViewById(R.id.tvResult);

    btnAdd.setOnClickListener(this);
    btnSubtract.setOnClickListener(this);
    btnMultiply.setOnClickListener(this);
    btnDivide.setOnClickListener(this);
}

@Override
   public void onClick(View view) {
    String num1 = etfirst.getText().toString();
    String num2 = etsecond.getText().toString();

    switch (view.getId()) {
        case R.id.btnAdd:
            double addition = Double.parseDouble(num1) + 
            Double.parseDouble(num2);
            tvresult.setText(String.valueOf(addition));
            break;

        case R.id.btnSubtract:
            double subtraction = Double.parseDouble(num1) - 
            Double.parseDouble(num2);
            tvresult.setText(String.valueOf(subtraction));
            break;

        case R.id.btnMultiply:
            double multiply = Double.parseDouble(num1) * 
            Double.parseDouble(num2);
            tvresult.setText(String.valueOf(multiply));
            break;

        case R.id.btnDivide:
            try {
                double division = Double.parseDouble(num1) /  
                Double.parseDouble(num2);
                tvresult.setText(String.valueOf(division));

            } catch (Exception e) {
                tvresult.setText("Cannot Divide!");
            }
            break;
    }
}       }
}

1 个答案:

答案 0 :(得分:0)

更改全部

Integer.parseInt()

Double.parseDouble()

以及到double而不是int的所有变量声明。
该应用程序崩溃

java.lang.NumberFormatException

当您尝试将1.1解析为Integer时。