代码之家  ›  专栏  ›  技术社区  ›  Developer

需要代码添加2个数字

  •  0
  • Developer  · 技术社区  · 14 年前

    我的实际号码是 1234567890123456789

    从这件事我得把它分开 s=12 s1=6789 s3=3456789012345

    我想补充如下

    11+3, 2+4, 6+5, 7+6, 8+7, 9+8 输出如下

    4613579012345

    5 回复  |  直到 13 年前
        1
  •  2
  •   heisenberg    14 年前
        public static string CombineNumbers(string number1, string number2)
        {
            int length = number1.Length > number2.Length ? number1.Length : number2.Length;
            string returnValue = string.Empty;
    
            for (int i = 0; i < length; i++)
            {
                int n1 = i >= number1.Length ? 0 : int.Parse(number1.Substring(i,1));
                int n2 = i >= number2.Length ? 0 : int.Parse(number2.Substring(i,1));
                int sum = n1 + n2;
    
                returnValue += sum < 10 ? sum : sum - 10;
            }
            return returnValue;
        }
    
        2
  •  2
  •   fire.eagle    14 年前

    这听起来很像家庭作业问题,所以我不给代码。想想你需要做什么。您的意思是,您需要从两个字符串的前面去掉第一个字符,将它们解析为int,然后将它们相加。最后,获取加法的结果并将其附加到新字符串的末尾。如果你写的代码遵循这条路径,它应该工作得很好。

        3
  •  1
  •   Oliver    14 年前

    这个LINQish解决方案怎么样:

    private string SumIt(string first, string second)
    {
        IEnumerable<char> left = first;
        IEnumerable<char> right = second;
    
        var sb = new StringBuilder();
    
        var query = left.Zip(right, (l, r) => new { Left = l, Right = r })
                        .Select(chars => new { Left = int.Parse(chars.Left.ToString()),
                                               Right = int.Parse(chars.Right.ToString()) })
                        .Select(numbers => (numbers.Left + numbers.Right) % 10);
    
        foreach (var number in query)
        {
            sb.Append(number);
        }
        return sb.ToString();
    }
    
        4
  •  1
  •   Aykut Çevik    14 年前

    尝试了一些东西:

    public static string NumAdd(int iOne, int iTwo)
        {
            char[] strOne = iOne.ToString().ToCharArray();
            char[] strTwo = iTwo.ToString().ToCharArray();
    
            string strReturn = string.Empty;
    
            for (int i = 0; i < strOne.Length; i++)
            {
                int iFirst = 0;
                if (int.TryParse(strOne[i].ToString(), out iFirst))
                {
                    int iSecond = 0;
                    if (int.TryParse(strTwo[i].ToString(), out iSecond))
                    {
                        strReturn += ((int)(iFirst + iSecond)).ToString();
                    }
                }
    
                // last one, add the remaining string
                if (i + 1 == strOne.Length)
                {
                    strReturn += iTwo.ToString().Substring(i+1); 
                    break;
                }
            }
    
            return strReturn;
        }
    

    你应该这样称呼它:

    string strBla = NumAdd(12345, 123456789);
    

    只有当第一个数字小于第二个数字时,此函数才起作用。但这会帮助你了解事情的来龙去脉。

        5
  •  0
  •   Neil    14 年前

    换言之,您需要添加两个数字,将较小的数字视为其右侧有零,直到其位数与较大的数字相同。

    听起来现在的问题很简单,就是要找出你需要把小数字乘以多少才能得到大数字的位数。