【发布时间】:2014-10-14 16:48:42
【问题描述】:
Modulo 在 Java 中计算值的方式与在 VBScript 中的计算方式有区别吗?
这两个都返回一个数字,我稍后在代码中将其用作较大数字的一部分,但我认为问题在于 VBScript 和 Java 处理 Mod 运算符的方式之间。不过我可能错了。
我正在尝试解决为什么我在运行下面的 VBscript 代码块与我在 Java 中的复制版本时看到不同输出的原因,对于更新帖子的延迟表示抱歉。
该函数接受一个字符串,然后根据循环中的逻辑确定返回数字。丢失的代码只与初始化使用的变量有关,并确定要循环的字符串的长度。
任何帮助将不胜感激!谢谢
VBScript:
For i=1 to Length
CurrentNumber = Mid(CCNumber,i,1)
CurrentNumber = Int(CurrentNumber)
If (i mod 2) <> 0 then
ModNumber = CurrentNumber * 2
If ModNumber > 9 then
Total = Total + 1 + (ModNumber mod 10)
Else
Total = Total + ModNumber
End If
Else
Total = Total + CurrentNumber
End If
Next
cd = ((Int(Total/10) + 1) * 10) - Total
if cd = 10 then cd = 0
CheckDigit = cd
Java:
for (i=0; i<length; i++)
{
String currentNumberString = CCNumber.substring(i,i+1);
currentNumber = Integer.valueOf(currentNumberString);
if (i % 2 != 0)
{
Integer ModNumber = currentNumber * 2;
if (ModNumber > 9)
{
total = total + 1 + (ModNumber % 10);
}
else
{
total = total + ModNumber;
}
}
else
{
total = total + currentNumber;
}
}
int cd = ((Integer.valueOf(total/10) + 1) * 10) - total;
if (cd == 10)
{
cd = 0;
}
return cd;
}
【问题讨论】:
-
您有理由相信这是事实吗?一个例子可以帮助人们更好地回答你的问题。
-
您是否正在解决一些具体问题?
-
Remainder Operator in Java 这是Mod Operator in VBScript(我假设负数或浮点数可能出现意外行为?)