爲了實踐,我試圖通過將它們放入數組並在數組中添加相應的元素來添加兩個非常長的整數。但是,當試圖添加結轉時,我遇到了問題(即,結轉是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