Hola. He estado intentando crear una calculadora en Java y me funciona casi perfectamente lo que tengo actualmente. El único problema que tengo es a la hora de obtener el resultado. Las líneas de código que me muestran 'errores' son las siguientes:
primero=Integer.parseInt(txtpantalla.getText());
if(signo == "+"){
resultado=primero+segundo;
}
txtpantalla.setText(testo.valueOf(resultado));
txtpantalla.setText(testo);
He marcado con amarillo las zonas que me han subrayado con amarillo. Como podéis ver, tengo un int para realizar la operación de suma en caso de que la variable signo sea +. Una vez que hace la operación, para que pueda poner el resultado en la caja de texto lo trato de pasar al string testo, pero a la hora de ejecutar el programa e ir a realizar la operación me ocurre que tras poner los números y el signo, finalmente no sale nada y acaba dando errores que adjunto por aquí:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at calculadoraseria.index.jButton11ActionPerformed(index.java:247)
at calculadoraseria.index.access$1000(index.java:12)
at calculadoraseria.index$11.actionPerformed(index.java:129)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Lo peor de todo es que la primera vez que le doy al botón de = no pasa nada, ni hace la operación ni da error. Pero a la hora de darle por una segunda vez sale ese error y sigue sin hacer la operación.
Entonces mi duda es cómo hacer que realice la operación, o si es más fácil hacerlo de otra forma.
Gracias de antemano.