统计用户输入的一串数字中每个数字出现的次数

1.先判断用户输入的是否是数字,用if-else语句来判断;

2.将用户输入的数字字符串转换成char数组;

3.用for循环遍历每个字符,根据switch-case语句来逐一判断。

4.再建立一个int数组来接收判断后的结果,最后for循环输出。

 

 

class Program
    {
        static void Main(string[] args)
        {
            //计算用户输入的一串数字中每个数字出现的次数

            Console.WriteLine("请输入一串数字");
            string str = Console.ReadLine();


             // 将字符串转换为字符数组
             char[] chnum = str.ToCharArray();

             #region 判断用户输入的是否是数字
             for ( int i =  0; i < chnum.Length; i++)
            { // 判断每一个字符是否是数字  通过char的方法来判断
                 if (! char.IsNumber(chnum[i]))
                {
                    Console.WriteLine( " 您的输入有误,请输入数字 ");
                    Console.ReadKey();
                     return;
                }
            }


             // 定义一个新的数组来保存计数
              int[] count= new  int[ 9];

              #region for循环遍历
              // for循环遍历
              for ( int i =  0; i < chnum.Length; i++)
             {
                  switch (chnum[i])
                 {
                      case  ' 1 ':
                         count[ 0]++;
                          break;
                      case  ' 2 ':
                         count[ 1]++;
                          break;
                      case  ' 3 ':
                         count[ 2]++;
                          break;
                      case  ' 4 ':
                         count[ 3]++;
                          break;
                      case  ' 5 ':
                         count[ 4]++;
                          break;
                      case  ' 6 ':
                         count[ 5]++;
                          break;
                      case  ' 7 ':
                         count[ 6]++;
                          break;
                      case  ' 8 ':
                         count[ 7]++;
                          break;
                      case  ' 9 ':
                         count[ 8]++;
                          break;
                 }
             } 

for ( int i =  0; i < count.Length; i++)
            {
                Console.WriteLine( " 含有的数字 {0} 的个数是:{1} ", i +  1, count[i]);
            } 
             #endregion
            Console.ReadKey();

        }
    }

不过,这种方法有两个缺点就是,如果用户输入的不是数字(如字母或符号等),程序会提示错误,并退出;再者,也会统计出用户没有输入过的数字的个数为0个,如果某些时候不想知道没有输入的数字的个数,这种解法很不合适,而且代码修改起来也很复杂。

 

 

用Dictionary来解

 

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入数字");
            string numbers = Console.ReadLine();
            //创建集合  键 为数字 char类型    值为每个数字出现的次数 int类型 
            Dictionary<charint> dict = new Dictionary<charint>();
            //将数字字符串转换为单个字符数组
            char[] chs = numbers.ToCharArray();
            for (int i = 0; i < chs.Length; i++)
            {
                //判断是否是数字 用到char的isnumber方法
                if (char.IsNumber(chs[i]))
                {
                    //如果键中已含有该数字,则将其对应的值+1,否则不存在,加入键中 值为1
                    if (!dict.ContainsKey(chs[i]))
                    {
                        //将每个数字字符作为键 存入 键值对中, 值初始为1
                        dict.Add(chs[i], 1);        
                    }
                    else
                    {
                        //值+1
                        dict[chs[i]]++;
                    }
                }
            }
            //循环遍历键值对输出
            foreach (KeyValuePair<char,int> item in dict)
            {
                Console.WriteLine("数字:{0}出现了{1}次。",item.Key,item.Value);
            }
            Console.ReadKey();

本文链接:https://my.lmcjl.com/post/8235.html

展开阅读全文

4 评论

留下您的评论.