簡體   English   中英

需要代碼以加2個數字

[英]Need code for addition of 2 numbers

我把數字當作字符串

我的實際電話是1234567890123456789

從這里我必須將其分隔為s=12 s1=6789 s3=3456789012345

仍然如我所說

我想補充如下

11+3, 2+4, 6+5, 7+6, 8+7, 9+8這樣輸出應如下

4613579012345

任何幫助請

這聽起來很像是一個家庭作業問題,所以我沒有給出代碼。 只需考慮您需要做什么。 您說的是,您需要從兩個字符串的開頭刪除第一個字符,將它們解析為int,然后將它們加在一起。 最后,取加法的結果並將它們附加到新字符串的末尾。 如果您編寫的代碼遵循該路徑,則應該可以正常工作。

編輯:正如拉爾夫指出,您還需要檢查溢出。 我開始輸入時沒有注意到。 雖然,這應該不太困難,因為您是以兩個一位數字開頭。 如果數字大於9,則只需減去10,即可將其降至正確的一位數字。

    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;
    }

嘗試了一些事情:

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);

僅當第一個數字小於第二個數字時,此功能才有效。 但這將幫助您了解它的含義。

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();
}

換句話說,您想添加兩個數字,將較小的數字視為右邊的零,直到它與較大的數字具有相同的位數。

聽起來這時的問題很簡單,就是找出要乘以較小的數字以達到較大數字的位數需要多少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM