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