黑马程序员技术交流社区
标题:
谁帮忙精简掉重复代码
[打印本页]
作者:
重新开始
时间:
2013-10-21 12:07
标题:
谁帮忙精简掉重复代码
本帖最后由 重新开始 于 2013-10-22 09:45 编辑
想把代码精简一下,但没想到合适方法,那位能帮我把下边重复的代码再精简一下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace test7
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入中文日期,如:二零一二年十二月月二十一日");
//取得中文日期
string str = Console.ReadLine();
//将取得的日期分割为年月日三段,并存入数组。
string[] strsp = str.Split('年', '月', '日');
//使用遍历将三段年月日替换成数字时间
for (int n = 0; n < 3;n++ )
{
foreach (char i in strsp[n])
{
if (n==2&&3== strsp[2].Length)
{
#region
if ('零' == i)
{
Console.Write(0);
}
if ('一' == i)
{
Console.Write(1); ;
}
if ('二' == i)
{
Console.Write(2);
}
if ('三' == i)
{
Console.Write(3);
}
if ('四' == i)
{
Console.Write(4);
}
if ('五' == i)
{
Console.Write(5);
}
if ('六' == i)
{
Console.Write(6);
}
if ('七' == i)
{
Console.Write(7);
}
if ('八' == i)
{
Console.Write(8);
}
if ('九' == i)
{
Console.Write(9);
}
#endregion
}
else
{
#region
if ('零' == i)
{
Console.Write(0);
}
if ('一' == i||'十'==i)
{
Console.Write(1); ;
}
if ('二' == i)
{
Console.Write(2);
}
if ('三' == i)
{
Console.Write(3);
}
if ('四' == i)
{
Console.Write(4);
}
if ('五' == i)
{
Console.Write(5);
}
if ('六' == i)
{
Console.Write(6);
}
if ('七' == i)
{
Console.Write(7);
}
if ('八' == i)
{
Console.Write(8);
}
if ('九' == i)
{
Console.Write(9);
}
#endregion
}
}
if (n!=2)
{
Console.Write('-');
}
}
Console.ReadKey();
}
}
}
作者:
大虾挂了
时间:
2013-10-21 13:04
说下我的想法
你上来那个if (n==2&&3== strsp[2].Length)这个判定是日的部分吧?日的部分不会‘零’的字样吧,所以这个
if ('零' == i)
{
Console.Write(0);
}
可以去掉。
然后你少考虑了一些情况,
月或者日只有一个‘十’字的时候你这里是跑步对的吧,你是不是直接把这个‘十’翻译成了‘1’,而他实际应该是‘10’。
当月或日是‘二十’‘三十’呢?你是不是翻译成了‘21’和‘31’。至于代码应该怎么,方法很多咯,但是我不能说,是吧
作者:
李小熊
时间:
2013-10-21 13:24
说下我的想法。
我认为,以下一段代码,有重复的很多。
#region
if ('零' == i)
{
Console.Write(0);
}
if ('一' == i||'十'==i)
{
Console.Write(1); ;
}
if ('二' == i)
{
Console.Write(2);
}
if ('三' == i)
{
Console.Write(3);
}
if ('四' == i)
{
Console.Write(4);
}
if ('五' == i)
{
Console.Write(5);
}
if ('六' == i)
{
Console.Write(6);
}
if ('七' == i)
{
Console.Write(7);
}
if ('八' == i)
{
Console.Write(8);
}
if ('九' == i)
{
Console.Write(9);
}
这个可以抽出来一个函数。
先判断 if ('一' == i||'十'==i) 这种情况,其余的作为另外一种情况抽出来函数。
然后就可以精简了。
作者:
追溯客
时间:
2013-10-25 11:19
同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2