gpt4 book ai didi

javascript - 将 JavaScript 函数转换为

转载 作者:行者123 更新时间:2023-12-03 06:22:45 26 4
gpt4 key购买 nike

我需要将此网站上的代码从 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com