• 采用c#实现功能1


          看了好多c#的菜鸟教程不如自己开始动手打代码,最终实现了功能一,参考了网上的wordcount代码发现无论是c++还是c#大部分采用的是哈希表的方法实现的,本来还想仅用循环实现遍历句子中的所有字符,即发现"  "就total++,但是考虑到功能二的单词数变得很多,这样做时间相对来说会慢一点,因此选择了hash表来实现功能。因为仅是一个句子,所以只需要将句子中的空格split就可以了,但在解决过程中我碰到的最大问题是C:Usersdell-pcDesktopwccwccInterface1.cs(24,24): 错误 CS0029: 无法将类型“string[]”隐式转换为“string”,查了好久最终解决了这个问题~

    using System;
    using System.IO;
    using System.Text;
    using System.Collections;
    using System.Collections.Generic;
    
    namespace wordcount
    {
        class Program
        {
    
            static void Main(string[] args)
            {
                Console.Write(">type ");
                string textFileName;
                textFileName = Console.ReadLine();
                //读取文件内容
                StreamReader sreader = new StreamReader(@"C:Usersdell-pcdesktop	est1.txt");
                //输出文件内容
                string aword = sreader.ReadLine();
                Console.WriteLine(aword);
                Console.WriteLine();
                char c = ' ';
                //除去' '后的字符串数组
                string[] s = aword.Split(c);
                //建立哈希表
                Hashtable ha = new Hashtable();
                for (int i = 0; i < s.Length; i++)
                {
                    //判断哈希表中是否有文本
                    if (ha.ContainsKey(s[i]))
                    {
                        ha[s[i]] = (int)ha[s[i]] + 1;
                    }
                    else
                    {
                        ha.Add(s[i], 1);
                    }
                }
                string[] arrKey = new string[ha.Count];//存键
                int[] arrValue = new int[ha.Count];//存值
                ha.Keys.CopyTo(arrKey, 0);
                ha.Values.CopyTo(arrValue, 0);
                Console.WriteLine(">wf -s test.txt");
                Console.WriteLine("total " + ha.Count);
                Console.WriteLine();
                Array.Sort(arrValue, arrKey);//排序
                for (int i = arrKey.Length - 1; i >= 0; i--)
                {
                    if ((string)arrKey[i] != "")
                    {
                         Console.Write(arrKey[i].ToString().PadRight (12)+" ");
                         Console.WriteLine(arrValue[i].ToString());
                    }
                }
            }
        }
    }

    下面是我的代码:

    最终实现结果为:

  • 相关阅读:
    如何进入闷声发大财的传统企业做数据分析工作,帮助企业做数字转型?
    做一个最好的自己,不盲目学数据分析
    sql server如何判断数据库是否存在
    c++引用深入探讨
    VirtualBox 安装ghost版windows XP
    QT透明显示文字
    CSAPP
    随机颜色的生成
    远程桌面如何传递声音的原理
    递归求解全排列
  • 原文地址:https://www.cnblogs.com/yuanyue-nenu/p/7537713.html
Copyright © 2020-2023  润新知