为了练习,我试图通过将两个非常长的整数放置在数组中并在数组中添加相应的元素来添加它们。但是,当尝试添加结转时,我遇到了问题(例如,结转是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]
18岁
结转为1。
8
2
[0,2,8,8]
最佳答案
这行的括号是:
answer = Character.getNumericValue(stringNumOne.charAt(stringNumOneLength - i)) + Character.getNumericValue(stringNumTwo.charAt(stringNumTwoLength - i) + carryOver);
错了。注意
+ carryOver
在Character.getNumericValue的调用中如何。