为了实践,我试图通过将它们放入数组并在数组中添加相应的元素来添加两个非常长的整数。但是,当试图添加结转时,我遇到了问题(即,结转是1,例如,当您执行199 + 199 = 398时,您增加到十个地方)。添加两个非常长的整数
当做167 + 189我得到正确的答案是356.然而,对于这个例子,虽然(199 + 199),我得到288而不是398.我的问题是,为什么我得到一个不正确的当我做199 + 199的时候回答,如果167 + 189的时候结转效果很好,
if (stringNumOneLength == stringNumTwoLength)
{ int answer;
int carryOver = 0;
int answerArray[] = new int[stringNumOneLength + 1];
for (int i = 1; i <= stringNumTwoLength; i = i + 1)
{
answer = Character.getNumericValue(stringNumOne.charAt(stringNumOneLength - i)) + Character.getNumericValue(stringNumTwo.charAt(stringNumTwoLength - i) + carryOver);
System.out.println(answer);
if (answer >= 10)
{
for (int j = 0; j <= 9; j = j + 1)
{
if (10 + j == answer)
{
carryOver = 1;
answer = j;
System.out.println("The carryover is " + carryOver + ".");
}
}
}
else
{
carryOver = 0;
}
answerArray[stringNumOneLength + 1 - i] = answer;
}
System.out.println(Arrays.toString(answerArray));
}
的输出是下面的:
[1,9,9]
[1,9,9]
的残留是1
[0,2,8,8]
这是很烦人花一个小时和一个半试图找出为什么所有的其他情况除了199 + 199的工作,只是为了发现它是因为括号。尽管如此,非常感谢!我永远不会忘记从现在开始检查语法。非常感谢你! – rsant023