JavaScript To Java线程"main"numberformatexception:用于

JavaScript To Java Exception in thread "main" java.lang.NumberFormatException: For input string: ""

本文关键字:quot numberformatexception 用于 main To Java JavaScript 线程      更新时间:2023-09-26

我试图将我的JavaScript解密方法转换为Java似乎无法做到这一点,因为我被困在这里,我正在输入字符串,我不知道为什么它说不…

错误代码:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at ae.df.sux.Main.Decrypt1(Main.java:42)
    at ae.df.sux.Main.main(Main.java:7)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Java代码:

public static String Decrypt1(String strIn) {
    String strOut = "";
    int lenIn = strIn.length();
    int i = 0;
    int A;
    int B;
    while (i < lenIn) {
        A = Integer.parseInt(strIn.substring(i, 2), 27);
        B = Integer.parseInt(strIn.substring(i + 2, 2), 27);
        strOut+= fromCharCode(A - B);
        i+=4;
    }
    return strOut;
}
JavaScript:

Decrypt1 = function (strIn) {
    var strOut = String();
    var lenIn = strIn.length;
    var i = 0;
    var numA;
    var numB;
    while (i < lenIn) {
        numA = parseInt(strIn.substr(i, 2), 27);
        numB = parseInt(strIn.substr(i + 2, 2), 27);
        strOut += String.fromCharCode(numA - numB);
        i += 4;
    }
    return strOut;
};

java错误行:

B = Integer.parseInt(strIn.substring(i + 2, 2), 27);

所以这个值是加密的:

431o5m215e1e723d7o3h6f2j401j4j2d7b345k1c631o59267j3g6627531a7a385o3g5125582g592n4l1l66395d2d4b1l4i1p531m4a1f5k2g4p2e4o205h2j693j3l1f593g7d3679317832511p5i1f6l2m6i2p7f3d58305f397g3j5c1a712k4e21783c5m267d374g1o5p3b4b234p314h2l4q2n52325e3i391b44215a3d5a344q36793c74325i1a411f6h2l5i226o2i4o254e205k3c552q391g682e7b3b5h216l2e6k2o3j1b

它应该返回:

<flash><strToken>MICQNQGJYLUANOG</strToken><intCharID>32962493</intCharID></flash>

我不知道是什么问题,谢谢你的帮助。

并非所有Java函数的行为都与其他javascript函数完全相同。你必须检查函数返回的是什么。我已经修改了您的java代码,以获得所需的输出。

 public static String Decrypt1(String strIn) {
    String strOut = "";
    int lenIn = strIn.length();
    int i = 0;
    int A;
    int B;
    int nextIndex = 0;
    while (i < lenIn) {
        nextIndex = i+4;
        String aStr= strIn.substring(i, i+2);
        String bStr= strIn.substring(i + 2, nextIndex);
        System.out.println("astr:"+aStr);
        System.out.println("bstr:"+bStr);
        A = Integer.parseInt(aStr, 27);
        B = Integer.parseInt(bStr, 27);
        System.out.println("A:"+A);
        System.out.println("B:"+B);
        int C = A- B;
        System.out.println("C:"+C);
        String charStr = new String(Character.toChars(C));
        System.out.println("charStr :" +charStr);

        strOut+= charStr;
        i+=4;
    }
    System.out.println("output:"+strOut);
    return strOut;
}
 output:<flash><strToken>MICQNQGJYLUANOG</strToken><intCharID>32962493</intCharID></flash>