Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Lain0x en 3 Diciembre 2010, 16:22 pm



Título: [Java] Error con actionPerformed
Publicado por: Lain0x en 3 Diciembre 2010, 16:22 pm
Hola, estoy haciendo un programa en Java en que una clase gráfica llama a una clase operaciones por medio de un objeto. El problema es que no se ejecuta correctamente, la verdad no hace nada.

Clase gráfica (No está completa obviamente, sólo la parte en que se origina el error)
La idea en ésta parte es que al presionar un botón se ingrese una cierta cantidad predeterminada, ésta cantidad es un String. El objeto p está declarado antes correctamente.

Código:
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        if(evt.getSource()==b1)
            new Operacion();
        {   String n="";
            n = "10000";

            t.setText(p.diezmil(n)+"");
        }
    }   



Clase Operación
El método de ésta clase recibe al String, lo convierte a entero, aplica la fórmula y retorna un número.

Código:
public class Operacion {

    public int diezmil(String valor)
    {
        valor ="";
        int a = Integer.parseInt(valor);
        int bi10;
        bi10 = a/10000;
        a = a%10000;

        return(bi10);
    }
}

Espero puedan ayudarme, gracias.


Título: Re: [Java] Error con actionPerformed
Publicado por: Dnk! en 3 Diciembre 2010, 17:41 pm
Citar
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {   

Hay ya estas concretando en que el componete b1 ha entrado en el evento ActionPerformed(). Por lo que :
Citar
if(evt.getSource()==b1)
es inecesario. Prueba con esto:

Código
  1. private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                  
  2.            new Operacion();
  3.            String n="";
  4.            n = "10000";
  5.  
  6.            t.setText(p.diezmil(n)+"");
  7.    }
  8.  

Creo que hay esta el fallo, prueba y me dices.


Título: Re: [Java] Error con actionPerformed
Publicado por: Lain0x en 3 Diciembre 2010, 21:53 pm
Me arroja esto:

Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at NuevoCajero.b1ActionPerformed(NuevoCajero.java:152)
        at NuevoCajero.access$000(NuevoCajero.java:16)
        at NuevoCajero$1.actionPerformed(NuevoCajero.java:53)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:5517)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
        at java.awt.Component.processEvent(Component.java:5282)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3984)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
        at java.awt.Window.dispatchEventImpl(Window.java:1791)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


Título: Re: [Java] Error con actionPerformed
Publicado por: 1mpuls0 en 4 Diciembre 2010, 07:09 am
Hola que tal

Código:
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        if(evt.getSource()==b1)
            new Operacion();
        {   String n="";
            n = "10000";

            t.setText(p.diezmil(n)+"");
        }
    }   

D:
No hace falta
Código
  1. if(evt.getSource()==b1)

Código
  1. new Operacion();
:huh:


Código
  1. String n="";
  2. n = "10000";

Igual a:

Código
  1. String n="10000";


Código
  1. p.diezmil(n)+""
Por curiosidad como declaras tu objeto p??

Código
  1. +""
Lo mas correcto es usar el método String.valueOf();

Intenta con:

Código
  1. private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                  
  2.            String n = "10000";
  3.            t.setText(String.valueOf(new Operacion().diezmil(n)));
  4.        }
  5. }  

o con:

Código
  1. private void b1ActionPerformed(java.awt.event.ActionEvent evt) {                                  
  2.            String n = "10000";
  3.            Operacion p = new Operacion();
  4.            t.setText(String.valueOf(p.diezmil(n)));
  5.        }
  6. }  


Ahora en esta parte:

Código:
public class Operacion {

    public int diezmil(String valor)
    {
        valor ="";
        int a = Integer.parseInt(valor);
        int bi10;
        bi10 = a/10000;
        a = a%10000;

        return(bi10);
    }
}

Código
  1. valor ="";
WTH :huh:

Para que le cambias el valor si vas a hacer el parse a int?, es como si hicieras

Código
  1. int a = Integer.parseInt("");

Y al intentar hacerlo te causa una error.

Intenta con:

Código
  1. public int diezmil(String valor) {
  2.        int a = Integer.parseInt(valor);
  3.        int bi10 = a/10000;
  4.        a = a%10000;
  5.        return bi10;
  6.    }

Saludos.