Ну, так number[i]
имеет тип char
вы можете преобразовать его в соответствующие int
либо (наибольший общий случай)
int result = (int) char.GetNumericValue(number[i]);
пожалуйста обратите внимание, что char.GetNumericValue
возвращается double
, это актуально для, скажем, '⅜'
характера (3/8
corrsponds к 0.375
); или если вы работаете только с ['0'..'9']
диапазона, все, что вам нужно сделать, это вычесть '0'
:
int result = number[i] - '0';
Пока ваш код может быть реализован как
// Math.Min - number.Length and number2.Length have diffrent size
// - 1 - strings are zero-based [0..Length - 1]
for (i = Math.Min(number.Length, number2.Length) - 1; i >= 0; i--) {
int save = number[i] + number2[i] - 2 * '0';
...
}
вероятно вы хотите право выравнивать как строки:
number = "124235245423523423"
+
number2 = "3423525232332325423"
------------------------------
354... ...846
в этом случае вы должны изменить for
цикл:
for (int i = 0; i < Math.Max(number.Length, number2.Length); ++i) {
int sum =
(i < number.Length ? number[number.Length - i - 1] : '0') +
(i < number2.Length ? number2[number2.Length - i - 1] : '0') -
2 * '0';
...
}
Получить символ по индексу, а затем преобразовать его в число. Полезные ссылки: http://stackoverflow.com/questions/2416894/how-to-return-the-character-which-is-at-the-index http://stackoverflow.com/questions/239103/c -sharp-char-to-int –
для (i = number.length-1; i> = 0; i--) – owairc
Почему вы не указали актуальную проблему, «IndexOutOfRangeException»? –