I am making a calculator application in java. I added backspace functionality and it displays fine on screen but when the calculation is done it displays some random value.
Example:-
input-1 : 963, input-2 : 78 but i remove 8 by pressing backspace.
operation: input-1 + input-2.
answer: 14.
input-1 : 956, input-2 : 48 but i remove 8 by pressing backspace.
operation: input-1 + input-2.
answer: 8.
also if I use subtraction operation(with backspace) then it always returns 0.
this is my code for backspace
private String input, input2 ;
private Double input_number;
boolean Addition, Subtract, Multiplication, Division, mRemainder, decimal, add_sub;
num_backspace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sample_input = (num_input.getText() + "");
input = sample_input.substring(0, sample_input.length() - 1);
num_input.setText(input);
if (input.contains(".")){
decimal = true;
}
else{
decimal = false;
}
}
});
And this is my code for equals
num_equals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Addition || Subtract || Multiplication || Division || mRemainder) {
input2 = (num_input.getText() + "");
}
if (Addition) {
float final_input = Float.parseFloat(input);
float final_input2 = Float.parseFloat(input2);
num_input.setText(new Float(final_input + final_input2 + "").toString().replaceAll("\\.?0*$", ""));
num_output.setText(new Float(final_input + final_input2 + "").toString().replaceAll("\\.?0*$", ""));
Addition = false;
}
if (Subtract) {
float final_input = Float.parseFloat(input);
float final_input2 = Float.parseFloat(input2);
num_input.setText(new Float(final_input - final_input2 + "").toString().replaceAll("\\.?0*$", ""));
num_output.setText(new Float(final_input - final_input2 + "").toString().replaceAll("\\.?0*$", ""));
Subtract = false;
}
if (Multiplication) {
float final_input = Float.parseFloat(input);
float final_input2 = Float.parseFloat(input2);
num_input.setText(new Float(final_input * final_input2 + "").toString().replaceAll("\\.?0*$", ""));
num_output.setText(new Float(final_input * final_input2 + "").toString().replaceAll("\\.?0*$", ""));
Multiplication = false;
}
if (Division) {
float final_input = Float.parseFloat(input);
float final_input2 = Float.parseFloat(input2);
num_input.setText(new Float(final_input / final_input2 + "").toString().replaceAll("\\.?0*$", ""));
num_output.setText(new Float(final_input / final_input2 + "").toString().replaceAll("\\.?0*$", ""));
Division = false;
}
if (mRemainder) {
float final_input = Float.parseFloat(input);
float final_input2 = Float.parseFloat(input2);
num_input.setText(new Float(final_input % final_input2 + "").toString().replaceAll("\\.?0*$", ""));
num_output.setText(new Float(final_input % final_input2 + "").toString().replaceAll("\\.?0*$", ""));
mRemainder = false;
}
}
});
if you want you can look at the full code here