示例#1
0
        /// <summary>
        /// Collect numbers
        /// </summary>
        /// <param name="myNumber"></param>
        /// <param name="isNegative"></param>
        protected override void ColloctNumbers(int myNumber, bool isNegative)
        {
            if (isNegative)
            {
                NegativeNumbers.Add(myNumber * -1);

                if (AllowNegative)
                {
                    Numbers.Add(myNumber * -1);
                }
            }
            else if (myNumber <= UpBound)
            {
                Numbers.Add(myNumber);
            }
            else
            {
                Numbers.Add(0);
                IgnoredNumbers.Add(0);
            }
        }
        public int Add(string numbers)
        {
            if (ContainsNoNumbers(numbers))
            {
                return(0);
            }

            if (ContainsASingleNumber(numbers))
            {
                return(GetSingleNumber(numbers));
            }

            var formattedNumbers = new FormattedNumberString(numbers);

            var negativeNumbers = new NegativeNumbers(formattedNumbers);

            if (negativeNumbers.HasAny())
            {
                throw new NegativeException($"Negatives not allowed, {negativeNumbers}");
            }

            return(new Calculator(formattedNumbers).GetTotal());
        }