Калькулятор, который принимает значения с плавающей запятой - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я учусь использовать 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 голосов
/ 10 декабря 2018

Измените все значения

Integer.parseInt()

на

Double.parseDouble()

и все объявления переменных на double вместо int.Приложение вылетает с

java.lang.NumberFormatException

, когда вы пытаетесь проанализировать значение вроде 1.1 до Integer.

...