Reputation: 3
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
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
Reputation: 7936
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