MinecraftMin

Informática => Software y desarrollo de Software => Lenguajes de programación => Mensaje iniciado por: Workod en Enero 22, 2016, 03:37:01 pm

Título: [Java] Error al pasar un int a String
Publicado por: Workod en Enero 22, 2016, 03:37:01 pm
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:

Citar
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.

       

Título: Re:[Java] Error al pasar un int a String
Publicado por: Alfomega en Enero 22, 2016, 03:52:09 pm
Para empezar, si pones string + string o incluso int + string lo que haces es concatenar, es decir, unes las cadenas de texto en una. Ambos números deben estar transformados con Integer.parseInt(string).
Segundo, el error pone que intenta parsear una cadna vacía a int, por lo que debe de haber algún fallo en donde coges los datos.
Por último, si quieres pasar un int a String, usa el método toString() del int. Por ejemplo, resultado.toString().
Título: Re:[Java] Error al pasar un int a String
Publicado por: Workod en Enero 23, 2016, 11:24:28 am
Para empezar, si pones string + string o incluso int + string lo que haces es concatenar, es decir, unes las cadenas de texto en una. Ambos números deben estar transformados con Integer.parseInt(string).
Segundo, el error pone que intenta parsear una cadna vacía a int, por lo que debe de haber algún fallo en donde coges los datos.
Por último, si quieres pasar un int a String, usa el método toString() del int. Por ejemplo, resultado.toString().
Al utilizar ese método me dice que int cannot be dereferenced.

En cuanto a que ambos números estén transformados, sí. Ambos están transformados por lo que el error debe estar a la hora de pasar el int a string.
Título: Re:[Java] Error al pasar un int a String
Publicado por: Alfomega en Enero 23, 2016, 12:00:47 pm
Para empezar, si pones string + string o incluso int + string lo que haces es concatenar, es decir, unes las cadenas de texto en una. Ambos números deben estar transformados con Integer.parseInt(string).
Segundo, el error pone que intenta parsear una cadna vacía a int, por lo que debe de haber algún fallo en donde coges los datos.
Por último, si quieres pasar un int a String, usa el método toString() del int. Por ejemplo, resultado.toString().
Al utilizar ese método me dice que int cannot be dereferenced.

En cuanto a que ambos números estén transformados, sí. Ambos están transformados por lo que el error debe estar a la hora de pasar el int a string.

Vale, fallo mio, es Integer.toString(resultado); Con tanto lenguaje ya mezclo cosas.