練習のために、配列に配置し、対応する要素を配列に追加することで、2 つの非常に長い整数を追加しようとしています。ただし、キャリー オーバーを追加しようとすると、問題が発生します (つまり、キャリー オーバーは 1 です。たとえば、199 + 199 = 398 を実行すると、10 の位に追加されます)。
167 + 189 を実行すると、356 という正しい答えが得られます。ただし、この例 (199 + 199) では、398 ではなく 288 が得られます。 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]