[英]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.