s[i]
не дает вам числа, это дает вам символ. +=
добавит значение ASCII (или Unicode) этого символа. Смотрите здесь:
Console.WriteLine((int)'1');
Таким образом вы получите 49 + 50 + 51 + 52 + 53, что равно 255.
Используйте int.Parse()
для преобразования строки в число :
value+=int.Parse(""+s[i]);
В программах вы также часто это увидите:
value+=s[i] - '0';
Это также работает, потому что символ 0 находится перед символом 1, поэтому 49-48 = 1 .
Вторая ошибка в вашей программе:
if(s[i]!=0){
По той же причине (символ вместо числа), которое должно читаться как
if(s[i]!='0'){
n
кажется неиспользованным. Вы можете удалить эту строку.