运行结果:输入是“HELLO WORLD!”
type in line
HELLO WORLD!  (这个是输入)
HELLO WORLD!
character counts are
Char is   count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is count is 0
Char is          count is 0
Char is
 count is 0
Char is   count is 0
Char is   count is 0
 count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is  count is 0
Char is   count is 1
Char is ! count is 1
Char is " count is 0
Char is # count is 0
Char is $ count is 0
Char is % count is 0
Char is & count is 0
Char is ' count is 0
Char is ( count is 0
Char is ) count is 0
Char is * count is 0
Char is + count is 0
Char is , count is 0
Char is - count is 0
Char is . count is 0
Char is / count is 0
Char is 0 count is 0
Char is 1 count is 0
Char is 2 count is 0
Char is 3 count is 0
Char is 4 count is 0
Char is 5 count is 0
Char is 6 count is 0
Char is 7 count is 0
Char is 8 count is 0
Char is 9 count is 0
Char is : count is 0
Char is ; count is 0
Char is < count is 0
Char is = count is 0
Char is > count is 0
Char is ? count is 0
Char is @ count is 0
Char is A count is 0
Char is B count is 0
Char is C count is 0
Char is D count is 1
Char is E count is 1
Char is F count is 0
Char is G count is 0
Char is H count is 1
Char is I count is 0
Char is J count is 0
Char is K count is 0
Char is L count is 3
Char is M count is 0
Char is N count is 0
Char is O count is 2
Char is P count is 0
Char is Q count is 0
Char is R count is 1
Char is S count is 0
Char is T count is 0
Char is U count is 0
Char is V count is 0
Char is W count is 1
Char is X count is 0
Char is Y count is 0
Char is Z count is 0
Char is [ count is 0
Char is \ count is 0
Char is ] count is 0
Char is ^ count is 0
Char is _ count is 0
Char is ` count is 0
Char is a count is 0
Char is b count is 0
Char is c count is 0
Char is d count is 0
Char is e count is 0
Char is f count is 0
Char is g count is 0
Char is h count is 0
Char is i count is 0
Char is j count is 0
Char is k count is 0
Char is l count is 0
Char is m count is 0
Char is n count is 0
Char is o count is 0
Char is p count is 0
Char is q count is 0
Char is r count is 0
Char is s count is 0
Char is t count is 0
Char is u count is 0
Char is v count is 0
Char is w count is 0
Char is x count is 0
Char is y count is 0
Char is z count is 0
Char is { count is 0
Char is | count is 0
Char is } count is 0
Char is ~ count is 0
Char is  count is 0
Press any key to continue也就是说把128个ascii码列出来(这个网页上显示不出来),并且算出每个ascii码在输入的里面出现的次数,比如输入是“HELLO WORLD!”,L出现了3次,所以“Char is L count is 3”我不太理解input.Length是什么?input不是数组啊,buffer[i] = input[i];又是什么意思?
我对这个程序不太明白,向各位大哥请教~~~谢谢!

解决方案 »

  1.   

    string input 
    string input = Console.ReadLine();
    把你输入的HELLO WORLD! \n 变成input的数组buffer[i] = intput[i]
    把buffer[i]引用input[i]的地址,即buffer[i]原有的地址将失效,引向input[i]的地址
      

  2.   

    input是一字符串,他有length属性获取他的长度。
    input[i]是获取第i位的字符
      

  3.   

    input是一字符串,他有length属性获取他的长度。
    input[i]是获取第i位的字符
      

  4.   

    "string input 
    string input = Console.ReadLine();
    把你输入的HELLO WORLD! \n 变成input的数组"这样input就成为了数组了吗???
    不用声明定义吗?
      

  5.   

    如果input是数组的话,为什么要
    for (int i = 0;i < buffer.Length; ++i)
    buffer[i] = input[i];
    这个步骤导到buffer这个数组里?,直接用input不好吗?
      

  6.   

    不一样,buffer是一个数组,input不是数组,input只是提供item的char访问方式而已,不能视为char数组,所以input不能直接付给buffer。string类型也远比char数组要来得复杂,但他们不是一个东西,不能简单地认为!
        input.Length和buffer.Length也不是一个含义。string的Length是表示这个字符串的长度,而数组的Length是表示数组的元素个数,在这里只不过是恰恰巧合而已!
      

  7.   

    buffer是一个数组,input是一个字符串;for (int i = 0;i < buffer.Length; ++i)
    buffer[i] = input[i];就是取出字符串的每个字符放到一个数组中,其实不用buffer数组也许更好理解一点。
    public static void CharCount(/*char[] buf*/string str,int[] cnt)
    {
    for (int i = 0; i<str.Length;++i)
    {
    cnt[(int)str[i]] += 1;
             }
    }
      

  8.   

    谢谢优游通[UUT]) 大哥!
    那么input[i];(i=0,1,2,3,4,5,6...,11:“hello world!”一共是12个字符)这种表达方式也不是数组的表达吗?那么比如input[3]我叫他什么?不是数组的元素吗?还有最后两行代码
                 public static void CharCount(char[] buf,int[] cnt)
                           {
    for (int i = 0; i<buf.Length;++i)
    cnt[(int)buf[i]] += 1;
                           }
    也就是CharCount(buffer,countCharacters)这个方法里面的流程是怎样的啊?
    buffer(也就是方法中的char[] buf),countCharacters(也就是int[] cnt)当中
    buffer是由input来的数组,也就是说buffer[0]里面是“H”,buffer[1]是“E”,buffer[2]是“L”...buffer[11]是“!”对吧,
    countCharacters是开始就定义了的128个元素的数组,是这样的吧,
    然后做一个for循环“for (int i = 0; i<buf.Length;++i)”也就是循环次数是输入的“hello world!”的字符个数,对吧,这里就是循环12次(每个字符循环一次),
    然后我就不明白了“cnt[(int)buf[i]] += 1;”是个什么东西啊:
    countCharacters[(int)buffer[i]],大概写起来是这么个示意
    这句话是什么意思啊,对谁计数啊,countCharacters[i]是128个ascii代码对应的数组元素名,但是(int)buf[i]怎么理解啊???buffer原来是char[] 的啊,这里(int)做什么,
    按推理来说(int)buffer[i]应该是countCharacters[i]里面ascii代码的128个元素的索引号
    但是这里面的i实际上是buffer[i]前面说的的数组内容啊(也就是说buffer[0]里面是“H”,buffer[1]是“E”,buffer[2]是“L”...buffer[11]是“!”)
    也就是说我没绕过来的是(int)buf[i]到底是个什么东西?请指教,谢谢
      

  9.   

    谢谢yanqinzhya312(heaven), 你写的代码在调用的时候是不是直接CharCount(input,countCharacters);?
    还是上面那个傻问题cnt[(int)str[i]] += 1;里面(int)str[i]代表的是什么?
      

  10.   

    int)str[i]是强制性转换
    将字符串str的第i个字符转换为整数,如果不能转换,则抛出一个异常
      

  11.   

    object[int index]这是一种访问方式,等同于object.item[int index], 这只是方便大家访问元素,不能应为这样,就将这个object视为数组,任何对象都可以加上用下标的访问方法,根据需要而已
      

  12.   

    谢谢!那么这里(int)buffer[i]是把字母转换成整数吗?比如buffer[2]是"L",那么把他强制转换成整数,就是这个字母的ascii代码值吗???
      

  13.   

    今天问了一位大哥,是会转换成这个字母的ascii代码值!这样一切问题就迎刃而解了,也谢谢各位,结帖,给分