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.
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.
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.
Citarprivate 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 :
Citarif(evt.getSource()==b1)
es inecesario. Prueba con esto:
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
new Operacion();
String n="";
n = "10000";
t.setText(p.diezmil(n)+"");
}
Creo que hay esta el fallo, prueba y me dices.
Me arroja esto:
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)
Hola que tal
Cita de: Lain0x en 3 Diciembre 2010, 16:22 PM
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
if(evt.getSource()==b1)
new Operacion();
:huh:
String n="";
n = "10000";
Igual a:
String n="10000";
p.diezmil(n)+""
Por curiosidad como declaras tu objeto p??
+""
Lo mas correcto es usar el método String.valueOf();
Intenta con:
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
String n = "10000";
t.setText(String.valueOf(new Operacion().diezmil(n)));
}
}
o con:
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
String n = "10000";
Operacion p = new Operacion();
t.setText(String.valueOf(p.diezmil(n)));
}
}
Ahora en esta parte:
Cita de: Lain0x en 3 Diciembre 2010, 16:22 PM
public class Operacion {
public int diezmil(String valor)
{
valor ="";
int a = Integer.parseInt(valor);
int bi10;
bi10 = a/10000;
a = a%10000;
return(bi10);
}
}
valor ="";
WTH :huh:
Para que le cambias el valor si vas a hacer el parse a int?, es como si hicieras
int a = Integer.parseInt("");
Y al intentar hacerlo te causa una error.
Intenta con:
public int diezmil(String valor) {
int a = Integer.parseInt(valor);
int bi10 = a/10000;
a = a%10000;
return bi10;
}
Saludos.