黑马程序员技术交流社区

标题: 谁帮忙精简掉重复代码 [打印本页]

作者: 重新开始    时间: 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