SilviuZLD
SilviuZLD

Reputation: 3

Calculator Crash

I am trying to create an app for calculating exam note When i'm pressing Calculate and there aren't any decimals it shows an answer but if there are decimals it crash

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));

            }
        });
    }
}

Upvotes: 0

Views: 82

Answers (2)

G-Shadow
G-Shadow

Reputation: 188

Use Float instead of Integer. Integer could not parse (and operate on) numbers with decimal point.

Added: here is error checking code:

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();
}

Upvotes: 0

Basically, you are trying to parse Double or Float value into Integer type, on the code below:

Integer.parseInt(Number1.getText().toString());

Your code will not work on decimal values. But you can change it to Double value like this:

double value1 = Double.parseDouble(Number1.getText().toString());

Upvotes: 1

Related Questions