javascript - 将 JavaScript 函数转换为

标签 javascript java function

我需要将此网站上的代码从 JavaScript 更改为 Java:

https://jsfiddle.net/3L6L2fmv/?utm_source=website&utm_medium=embed&utm_campaign=3L6L2fmv

这是来自另一个函数的调用,该函数生成随机数,但该数字为零的几率为 51 分之一:(其中“哈希”是 64 位十六进制数)

// In 1 of 51 games the game crashes instantly.
if (divisible(hash, 51))
    return 0;

这是函数:(其中 mod 始终为 51)

function divisible(hash, mod) {
// So ABCDEFGHIJ should be chunked like  AB CDEF GHIJ
var val = 0;

var o = hash.length % 4;
for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
    val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod;
}

return val === 0;
}

所以基本上,当 JavaScript 版本为某个哈希返回零时,我需要 Java 版本也为完全相同的哈希返回零。

这是我的第一次尝试,由于我对 JavaScript 的了解很少,所以这是我所能做到的。

    public static double divisible(String hash, int mod) 
{
    int val = 0;        
    int o = hash.length() % 4;      
    int i = 0;

    if(o > 0) {i = o - 4;}
    if(o < 0) {i = 0;}

    for ( int a = i; a < hash.length(); a += 4) 
    {           
       val = ((val << 16) + Integer.parseInt(hash.substring(i, i+4), 16)) % mod;            
    }
    return val;
 }

最佳答案

看来您只是混淆了 Java 代码中的变量,除此之外,看起来还不错。

public static double divisible(String hash, int mod) 
{
    int val = 0;        
    int o = hash.length() % 4;      
    int i = 0;

    if(o > 0) {i = o - 4;}
    if(o < 0) {i = 0;}

    for ( int a = i; a < hash.length(); a += 4) 
    {           
       val = ((val << 16) + Integer.parseInt(hash.substring(a, a+4), 16)) % mod;            
    }
    return val;
 }

子字符串中的值应该是a而不是i。 您可能假设 i = 索引。

改进如下。您不需要在 Java for 循环中创建新变量。

public static double divisible(String hash, int mod) 
{
    int val = 0;        
    int o = hash.length() % 4;      
    int i = 0;

    if(o > 0) {i = o - 4;}
    if(o < 0) {i = 0;}

    for (; i < hash.length(); i += 4) 
    {           
       val = ((val << 16) + Integer.parseInt(hash.substring(i, i+4), 16)) % mod;            
    }
    return val;
 }

关于javascript - 将 JavaScript 函数转换为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794377/

相关文章:

java - Spring Security - 记住我自定义服务 onLoginSuccess 未使用 oauth2 调用

c++ - 如何使用指针通过函数传递对象?

c# - 按顺序调用多个 API 来检索和传递 token C#

function - Haskell 中的函数和仿函数有什么区别?只有定义?

javascript - 如何使用 dojo/store/JsonRest 工作 ArcGIS Rest Service

java - 如何为包含双字段的类实现 equals/hashCode 方法

javascript - JQuery - 为什么附加 "complex"内容需要一个字符串上的 jquery 对象数组?

java - Log4j 配置并观察无法正常工作

javascript - jQuery 将选择字段和文本输入值实时合并到另一个文本字段

javascript - BluebirdJS promise jQuery 无法正常工作