您的位置:首页 > 编程语言 > C#

C#实现数字字符串的加法和自增运算

2013-05-12 23:51 211 查看
使用方式如下:

public class StringNumCalc
{
private string stringNumber;

/// <summary>
/// 字符串数字
/// </summary>
public String StringNumber
{
get { return this.stringNumber; }
}

/// <summary>
/// 构造函数初始化
/// </summary>
/// <param name="stringNumber"></param>
public StringNumCalc(String stringNumber)
{
this.stringNumber = stringNumber;
}

/// <summary>
/// 实现自增运算
/// </summary>
/// <param name="addend"></param>
/// <returns></returns>
public static StringNumCalc operator ++(StringNumCalc addend)
{
return addend + new StringNumCalc("1");
}

/// <summary>
/// 实现加法运算
/// </summary>
/// <param name="augend"></param>
/// <returns></returns>
public static StringNumCalc operator +(StringNumCalc addend, StringNumCalc augend)
{
String resultNum = StringAddition(addend.StringNumber, augend.StringNumber);
return new StringNumCalc(resultNum);
}

/// <summary>
/// 实现字符串的加法运算
/// </summary>
/// <param name="addend"></param>
/// <param name="augend"></param>
/// <returns></returns>
public static String StringAddition(String addend, String augend)
{
bool inc = false;
char[] addendArray = addend.ToCharArray();
Array.Reverse(addendArray);
char[] augendArray = augend.ToCharArray();
Array.Reverse(augendArray);
int addendLen = addendArray.Length;
int augendLen = augendArray.Length;
int maxLen = Math.Max(addendLen, augendLen) + 1;
char[] result = new char[maxLen];
Stack<char> charStack = new Stack<char>();
for (int i = 0; i < maxLen; i++)
{
charStack.Clear();
bool addendCalc = (addendLen > i) ? true : false;
bool augendCalc = (augendLen > i) ? true : false;
if (inc)
{
charStack.Push('1');
}
if (augendCalc)
{
charStack.Push(augendArray[i]);
}
if (addendCalc)
{
charStack.Push(addendArray[i]);
}
char resultChar = '0';
while (0 != charStack.Count)
{
char calcChar = charStack.Pop();
inc = false;
resultChar = CharAdd(resultChar, calcChar, out inc);
result[i] = resultChar;
}
}
Array.Reverse(result);
String stringResult = new String(result);
return stringResult.TrimStart('\0');
}

/// <summary>
/// 实现一个字符的加法
/// </summary>
/// <param name="addend"></param>
/// <param name="augend"></param>
/// <param name="increase"></param>
/// <returns></returns>
public static char CharAdd(char addend,char augend,out bool increase)
{
increase = false;
char result;
int addendNum = addend - '0';
int augendNum = augend - '0';
int resultNum = addendNum + augendNum;
if (resultNum > 9)
{
increase = true;
resultNum = resultNum - 10;
}

result = (char)(resultNum + '0');
return result;
}
}


使用方式如下:

 

String calcAddNum = "11111111111111111111";
StringNumCalc addNum = new StringNumCalc(calcAddNum);
for (int i = 0; i < 100; i++)
{
Console.WriteLine(addNum.StringNumber);
addNum++;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# String
相关文章推荐