黑马程序员技术交流社区

标题: 看视频的颠倒位置算法,Reverse()怎么用? [打印本页]

作者: anyu    时间: 2012-11-10 00:08
标题: 看视频的颠倒位置算法,Reverse()怎么用?
本帖最后由 anyu 于 2012-11-16 22:27 编辑

看视频里面,有个颠倒位置的算法。
比如:string[] str = { "张三", "李四", "王五", "赵六" };
            for (int i = 0; i < str.Length / 2; i++)
            {
                string temp ="";
                temp = str;
                str = str[str.Length - 1 - i];
                str[str.Length - 1 - i] = temp;
            }
            for (int i = 0; i < str.Length; i++)
            {
                Console.Write(str+" ");
            }
            Console.ReadKey();

然后老师说有一个Reverse()颠倒字符次序的函数,对于字符可以颠倒成功:
            string str = "itheima";
            char[] ch = str.ToCharArray();
            Array.Reverse(ch);
            Console.WriteLine(ch);      
上面的字符颠倒可以成功,如果颠倒数组类型为string或者int的数组,就会出现System.String[]或者System.Int32[],这个函数只能颠倒字符类型的数组吗?

作者: 黄冉    时间: 2012-11-10 06:52
Array.Reverse()就是对一维数组进行反转的。
比如:
string[] str={"12","34","56","78"};
Array.Reverse(str);
str类型可以是字符串,字符或者int这些类型
作者: lovemydream523    时间: 2012-11-10 09:27
Array.Reverse()反转的参数类型是string,而要颠倒字符次序的字符串返回值String,应该不是对数组和其他类型来反转颠倒的
作者: 维纳斯之叶    时间: 2012-11-10 10:21
Array.Reverse()是可以对string类型和int类型的数组进行翻转的,下面是我写的程序:
string[] str = { "你好","嘿嘿","我好"};
            Array.Reverse(str);
            for (int i = 0; i < str.Length; i++)
            {
                Console.WriteLine(str[i]);
            }

必须遍历str才能输入翻转后的结果(int的同理),不知道为什么Console.WriteLine(str);得到的结果是System.String[],继续关注。。。
作者: 王继光    时间: 2012-11-10 10:40
必须遍历str才能输入翻转后的结果(int的同理),不知道为什么Console.WriteLine(str);得到的结果是System.String[],继续关注。。。


关于上面的问题,是因为 Console.WriteLine() 或者 Console.Write() 输出的是一个对象 的 ToString()结果
比如:
int i =10;
  Console.Write(i);  此时输出的是 i 变量的 ToString() 结果
同样,放在 数组对象 里,
  string[]  strs = {"hello","hi","world"};
Console.Write(strs); 此时输出的是 strs.ToString()结果,也就是 System.String[] ,因为strs是一个对象,不是数组的元素,所以并不会输出数组的元素  
要想输出数组元素,还是得遍历输出元素。这就是为什么 遍历的时候我们 Console.Write(strs[i]) 参数里得填strs[i] 的原因

作者: anyu    时间: 2012-11-11 02:04
王继光 发表于 2012-11-10 10:40
必须遍历str才能输入翻转后的结果(int的同理),不知道为什么Console.WriteLine(str);得到的结果是System.St ...

哦,原来是这样,多谢了···
作者: 郭会茹    时间: 2012-11-11 22:32
黄冉 发表于 2012-11-10 06:52
Array.Reverse()就是对一维数组进行反转的。
比如:
string[] str={"12","34","56","78"};

str是字符串类型好不,里面的东西也是字符串类型
作者: 黄冉    时间: 2012-11-12 06:01
郭会茹 发表于 2012-11-11 22:32
str是字符串类型好不,里面的东西也是字符串类型

呵呵,你没理解我的意思,我意思是str也可以是字符或者int类型的数组。我在这里定义的是字符串数组。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2