一个算法一个遗憾

  好长时间都没写过算法类的程序,感觉比较不舒服.今天在网上看到了个题目,但实现之后还有Bug,很遗憾.

算法题目:需要将 中文的数字字符串 经过转换为数字 也就是说  一万二千三百四十五  结果为  12345 是这样的 

我的C#代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;

namespace MyFirstWindowFormsProgram {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }

        private void button1_Click(object sender, EventArgs e)         {             string _bigNumber = textBox1.Text;             string _smallNumber = "";             int j=0;             long sum=0;

            for (int i = 0; i < _bigNumber.Length; i++)             {                 if (_bigNumber[i] == '亿')                 {                     long partSum = 0;                     long[] flag = new long[i - 1];                     for (j = 0; j < i; j++)                     {                         switch (_bigNumber[j])                         {                             case '一':                                 flag[j] = 1;                                 break;                             case '二':                                 flag[j] = 2;                                 break;                             case '三':                                 flag[j] = 3;                                 break;                             case '四':                                 flag[j] = 4;                                 break;                             case '五':                                 flag[j] = 5;                                 break;                             case '六':                                 flag[j] = 6;                                 break;                             case '七':                                 flag[j] = 7;                                 break;                             case '八':                                 flag[j] = 8;                                 break;                             case '九':                                 flag[j] = 9;                                 break;                             case '亿':                                 flag[j] = 100000000;                                 break;                             case '万':                                 flag[j] = 10000;                                 break;                             case '千':                                 flag[j] = 1000;                                 break;                             case '百':                                 flag[j] = 100;                                 break;                             case '十':                                 flag[j] = 10;                                 break;                             default:                                 j++;                                 break;                         }                     }                     for (int k = 0; k < j; k++)                     {                         if (flag[k] >= 10)                         {                             partSum += flag[k - 1] * flag[k];                         }                         else if ((k == j - 1) && (flag[k] < 10))                         {                             partSum += flag[k];                         }                     }                     sum += partSum * 100000000;                 }                 else if (_bigNumber[i] == '万')                 {                     long partSum = 0;                     long[] flag = new long[i - j - 1];                     for (int k = 0; k < i - j - 1; k++)                     {                         switch (_bigNumber[k])                         {                             case '一':                                 flag[k] = 1;                                 break;                             case '二':                                 flag[k] = 2;                                 break;                             case '三':                                 flag[k] = 3;                                 break;                             case '四':                                 flag[k] = 4;                                 break;                             case '五':                                 flag[k] = 5;                                 break;                             case '六':                                 flag[k] = 6;                                 break;                             case '七':                                 flag[k] = 7;                                 break;                             case '八':                                 flag[k] = 8;                                 break;                             case '九':                                 flag[k] = 9;                                 break;                             case '千':                                 flag[j] = 1000;                                 break;                             case '百':                                 flag[j] = 100;                                 break;                             case '十':                                 flag[j] = 10;                                 break;                             default:                                 j++;                                 break;                         }                     }                     for (int k = 0; k < i - j - 1; k++)                     {                         if (flag[k] >= 10)                         {                             partSum += flag[k - 1] * flag[k];                         }                         else if ((k == j - 1) && (flag[k] < 10))                         {                             partSum += flag[k];                         }                     }                     sum += partSum * 10000;                 }                 else                 {                     long partSum = 0;                     long[] flag = new long[i - j - 1];                     for (int k = 0; k < i - j - 1; k++)                     {                         switch (_bigNumber[k])                         {                             case '一':                                 flag[k] = 1;                                 break;                             case '二':                                 flag[k] = 2;                                 break;                             case '三':                                 flag[k] = 3;                                 break;                             case '四':                                 flag[k] = 4;                                 break;                             case '五':                                 flag[k] = 5;                                 break;                             case '六':                                 flag[k] = 6;                                 break;                             case '七':                                 flag[k] = 7;                                 break;                             case '八':                                 flag[k] = 8;                                 break;                             case '九':                                 flag[k] = 9;                                 break;                             case '千':                                 flag[j] = 1000;                                 break;                             case '百':                                 flag[j] = 100;                                 break;                             case '十':                                 flag[j] = 10;                                 break;                             default:                                 j++;                                 break;                         }                     }                     for (int k = 0; k < i - j - 1; k++)                     {                         if (flag[k] >= 10)                         {                             partSum += flag[k - 1] * flag[k];                         }                         else if ((k == j - 1) && (flag[k] < 10))                         {                             partSum += flag[k];                         }                     }                     sum += partSum;                 }             }             textBox2.Text = sum.ToString();         }     } }

遗憾的就是在运行的时候,编译器提示:

                             算术运算导致溢出。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值