Take a look at your btMinusActionPerformed
method:
private void btMinusActionPerformed(java.awt.event.ActionEvent evt) {
// minus button
firstNumber = Float.parseFloat(calScreen.getText());
OP = "-";
numberClick += 1;
if (!calScreen.getText().equals("-") && numberClick == 2){
btEqual.doClick();
}
else {
calScreen.setText("-"); // <- What does this do?
}
}
Then take a look at the btEqualActionPerformed
method:
private void btEqualActionPerformed(java.awt.event.ActionEvent evt) {
// Result
// What is getText() going to return if you pressed the minus button?
secondNumber = Float.parseFloat(calScreen.getText());
{ ... } // Omitted for brevity
}
Follow that through logically and you’ll notice that when you click the buttons for 1
, -
, and 2
, you will read in 1
and -2
. You’re already storing the operand in OP
, so what you’ll do is 1 - (-2)
, which does actually equal 3
. Your problem is in btMinusActionPerformed
– that’s where you need to fix your code.
Additionally, your operations
regular expression isn’t quite correctly defined. You haven’t escaped either the -
or the .
, so they aren’t going to work in the way that you expect them to.
operations = "[+|\\-|x"https://stackoverflow.com/"0|\\.]",
// ^ ^
// Note the escape characters at these two locations
That should make your regex work in the way you intended for it to work.
An alternative solution would be to remove:
calScreen.setText("-");
From your btMinusActionPerformed
method (and the corresponding lines from the other three operator’s methods), which would mean that the regex wasn’t necessary.
16
solved Java Calculator minus error