日期:2014-05-17  浏览次数:20655 次

为什么这样写出来的代码实现不了数组元素反序?(代码如下,高手指点)
class Program
  {
  static void Main(string[] args)
  {
  int i;

  String[] a ={ "3", "a", "8", "haha" };

  for (i = 0; i < a.Length; i++)
  {
  a[i] = a[a.Length - 1 - i];
  Console.WriteLine(a[i]);
  }
  Console.ReadKey();
  }




运行结果是:haha 8 8 haha

------解决方案--------------------
第1次循环结果:={ "haha", "a", "8", "haha" };
第2次循环结果:={ "haha", "8", "8", "haha" };
第3次循环结果:={ "haha", "8", "8", "haha" };
第4次循环结果:={ "haha", "8", "8", "haha" };

a[i] = a[a.Length - 1 - i]; 执行以后 a数组已经被替换、

第三次 第四次 已经不是原来的 { "3", "a", "8", "haha" };
------解决方案--------------------
a[i] = a[a.Length - 1 - i];自己都把自己覆盖了,比如"haha"把"3"替换了,再也找不到"3"了,你应该借助中间变量,去做
------解决方案--------------------
C# code

int i;
String[] a = { "3", "a", "8", "haha" };
string[] b = new string[4];
for (i = 0; i < a.Length; i++)
{
    b[i] = a[a.Length - 1 - i];
    Console.WriteLine(b[i]);
}
//重新定义个数组变量

------解决方案--------------------
int i;

String[] a = { "3", "a", "8", "haha" };
for (i = 0; i < a.Length; i++)
{
Console.WriteLine(a[a.Length - 1 - i]);
}