мне нужно изменить этот код из JavaScript в Java с этого сайта:Преобразование функции JavaScript в
https://jsfiddle.net/3L6L2fmv/?utm_source=website&utm_medium=embed&utm_campaign=3L6L2fmv
Это вызов из другой функции, которая генерирует случайные числа, но имеет 1 в 51 шанс из количество равно нулю: (где "хэш" представляет собой 64-битное шестнадцатеричное число)
// In 1 of 51 games the game crashes instantly.
if (divisible(hash, 51))
return 0;
И это функция: (где моды всегда 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;
}
Stack Overflow - это сайт вопросов и ответов, а не служба перевода кода. Сначала попробуйте перевести код, затем придите к нам, когда вы застряли, убедившись, что нам показали [то, что вы пробовали] (// stackoverflow.com/help/mcve). – FrankerZ
Я показал свою попытку как можно дальше. и застрял – Joey