嗨,我正在尝试将此 JavaScript 代码转换为 Java,但我似乎无法做到这一点,我陷入了最后一部分,我需要将 JavaScript 代码转换为 Java 加密部分。
JavaScript 代码:
Encrypt = function (strIn) {
var strOut = String();
var lenIn = strIn.length;
var i = 0;
var numRand;
while (i < lenIn) {
numRand = Math.floor(Math.random() * 66) + 36;
strOut += (strIn.charCodeAt(i) + numRand).toString(27) + numRand.toString(27);
i++;
}
return strOut;
};
Java 代码:
public static String Encrypt(String strIn) {
String strOut = null;
int lenIn = strIn.length();
int i = 0;
double numRand;
while (i < lenIn) {
numRand = Math.floor(Math.random() * 66) + 36;
strOut += (strIn.charAt(i) + numRand).toString(27) + numRand.toString(27);
i++;
}
return strOut;
}
这行代码有错误:
strOut += (strIn.charAt(i) + numRand).toString(27) + numRand.toString(27);
错误:
Error:(22, 50) java: double cannot be dereferenced
我似乎无法说出为什么任何帮助都是美妙的。
非常感谢。
最佳答案
您遇到的问题是 double
是原始类型(以及 char
和 int
),因此它没有toString()
方法(在 Java 中属于 Object
)。为了更深入地挖掘,您的错误消息提示 double
的原因是因为您的 numRand
变量的类型为 double,因此由于转换 strIn.charAt(i ) + numRand
也变为 double 。
相反,您可以使用诸如Integer.toString(value, radix)
之类的东西,它是Integer
的静态成员。修改后的代码可能看起来像......
strOut += Integer.toString((int)(strIn.charAt(i) + (char)numRand), 27) +
Integer.toString((int)numRand, 27);
关于Javascript 到 java 代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296252/