线程 "main"java.lang.NumberFormatException : For input string: "" 中的 JavaScript 到 Java 异常

标签 javascript java

您好,我正在尝试将我的 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>

关于线程 "main"java.lang.NumberFormatException : For input string: "" 中的 JavaScript 到 Java 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33298054/

相关文章:

javascript - 在 DOMContentLoaded 上的 javascript 函数中声明全局常量

javascript - 如何避免重新渲染整个列表而不是在 React JS 中将新项目添加到 DOM 列表?

javascript - 打开其中有多个选项卡的窗口

java - XSLT-使用java动态创建元素

java - 数据库交互后重定向

java - 访问对象内对象的 setter

JavaScript 导致 CSS 过渡不起作用

javascript - Shopify 触发变体选择功能,但不覆盖现有功能

java - Struts 2 WebContent下上传文件目的地

java - 测试用例失败时使用 EasyTest 时出现 ParameterizedAssertionError