JDEV
JDEV

Reputation: 77

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException but string is not empty

I'm getting this error:

Exception in thread "AWT-EventQueue-0"
java.lang.NumberFormatException: For input string: "C6AD0E40" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583) 
    at keygen.keygens(keygen.java:93) 
    at keygen.access$3(keygen.java:89) 
    at keygen$2.actionPerformed(keygen.java:84) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    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:6539) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6304) 
    at java.awt.Container.processEvent(Container.java:2239) 
    at java.awt.Component.dispatchEventImpl(Component.java:4889) 
    at java.awt.Container.dispatchEventImpl(Container.java:2297) 
    at java.awt.Component.dispatchEvent(Component.java:4711) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283) 
    at java.awt.Window.dispatchEventImpl(Window.java:2746) 
    at java.awt.Component.dispatchEvent(Component.java:4711) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) 
    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$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    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)

in this function

private int keygens(String code, String serial) {

        int c =Integer.parseInt(code.substring(0, 12).replaceAll("[a-zA-Z-]", "").replaceFirst("^0+(?!$)", ""))+647260488;
        String s=serial.replaceAll("-", "");
     int dec=Integer.parseInt(s,16);
                 return (int) Math.pow(c,dec);
}
    System.out.print(keygens("0036-7104-0236-ab","C6AD-0E40"));

Can't figure out why

Appreciate any help

Upvotes: 0

Views: 173

Answers (1)

VGR
VGR

Reputation: 44413

From the documentation of Integer.parseInt:

Parses the string argument as a signed integer …

"C6AD0E40" will not fit in a signed 32-bit integer.

Use this instead:

Integer.parseUnsignedInt(s, 16)

Upvotes: 1

Related Questions