Problem:
暗証番号

新しい暗証番号は覚えにくいものです。メモするのはダメといわれましたが、覚えられそうにありません。そこで文章の中に数値を埋め込んで暗証番号をメモすることにしました。ここでは全ての数値の和が暗証番号になります。

メモされた文章を読み込んで、暗証番号を出力するプログラムを作成してください。

Input

正の整数が埋め込まれた文章が複数行にわたり与えられます。各行は半角英数字、記号、空白を含む文字列または空行です。
ただし、入力は 1 行あたり 80 文字以内で、暗証番号は 10,000 以下であることが保障されています。

Output

暗証番号（文章中の正の整数の合計）を１行に出力します。

Sample Input

Thereare100yenonthetable.Iam17yearsold.
Ishouldgohomeat6pm.

Output for the Sample Input

123

Solution in C# (judge verdict: Wrong Answer)

using System;

namespace AOJ0064
{
    class Program
    {
        public void Proc()
        {
            int pass = 0;
            while (true)
            {
                string input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;

                bool[] num = checkSentence(input);
                pass += decipher(input, num);   
            }
            Console.WriteLine(pass);

        }
        static void Main(string[] args)
        {
            Program prg = new Program();
            prg.Proc();
        }

        public static bool[] checkSentence (string str)
        {
            char[] arr = str.ToCharArray();
            bool[] res = new bool[arr.Length];
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] >= '0' && arr[i] <= '9') res[i] = true;
            }
            return res;
        }

        public static int decipher (string str, bool[] isNum)
        {
            int total = 0;

            for (int i = 0; i < isNum.Length; i++)
            {
                if (isNum[i])
                {
                    int start = i;
                    int count = 1;
                    while (i != isNum.Length - 1 && isNum[i+1])
                    {
                        i++;
                        count++;
                    }
                    string num = str.Substring(start, count);
                    total += int.Parse(num);
                }
            }
            return total;
        }
    }
}