一个算法一个遗憾
来源:互联网 发布:plc编程网站 编辑:程序博客网 时间:2024/04/28 07:35
好长时间都没写过算法类的程序,感觉比较不舒服.今天在网上看到了个题目,但实现之后还有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(); } }}
遗憾的就是在运行的时候,编译器提示:
算术运算导致溢出。
- 一个算法一个遗憾
- Windows输入法设计的一个遗憾
- 一个学习计算机图形学学生的遗憾
- 作为一个程序员我最大的遗憾
- 一个b2c设计草稿(遗憾的终止计划)
- 一个算法
- 一个算法
- 一个算法
- 一个算法
- 还我一个奇迹——记僵尸3的遗憾和美丽
- CSDN问题太多,作为CSDN的一个用户,我感到非常遗憾
- 找到一个新家,我要带着遗憾的泪水搬家了。
- 遗憾
- 遗憾
- 遗憾
- 遗憾
- ?遗憾?
- 遗憾
- 三大核心焦点决定IBM SOA战略走向
- .NET 学习
- 五句人生感悟
- 单元合并帮助企业成功的完成复杂的SOA项目
- 启动/关闭数据库中的定时共享代理
- 一个算法一个遗憾
- 最近的免费防火墙和杀毒软件
- 删除数据库中的复制存储冲突文档
- 算法讨论
- 用PERL语言写的第一个实用小程序
- CSS position 属性
- 求牛人帮忙 谁能帮忙检查错误
- 突然想起我也是奔30的人了
- 小试牛刀:Eclipse3.1.1中开发EJB 3.0 Project下的Session Bean