有没有人可以帮助我?我正在写一个程序(颠倒数组),但它不会运行:(

问题描述:

我正在写一个关于使用3种方法(GenerateNumber,reverse和PrintOut)颠倒数组的程序。有没有人可以帮助我?我正在写一个程序(颠倒数组),但它不会运行:(

不幸的是, “吨运行。你能帮助我找到错误并解决这些问题?

为什么它不跑?

public class Program 
{ 
    static int[] GenerateNumber() 
    { 
     string a = Console.ReadLine(); 
     int b = Convert.ToInt32(a); 
     int[] number = new int [b]; 
     string[] c = new string[b]; 
     for (int index = 0; index < number.Length; index++) 
     { 
      c[index] = Console.ReadLine(); 
      number [index]= Convert.ToInt32(c[index]); 
     } 
     return number; 
    } 
    static int[] reverse(int[] array) 
    { 

     for (int index =0; index <array.Length; index++) 
     { 
      int c = array[index]; 
      array[index] = array[array.Length - index - 1]; 
      array[array.Length - index - 1]= c; 
     } 
     return array; 
    } 
    static int[] PrintOut (int[] array) 
    { 
     for (int index = 0; index > array.Length; index++) 
      Console.Write(array[index]); 
     return array; 
    } 
      static void Main(string[] args) 
    { 
     int[] number = GenerateNumber(); 
     reverse(number); 
     PrintOut(number); 
     Console.ReadKey(); 
    } 
+0

没有读通过完全,但它看起来像'index phoxis

+2

'for(int index = 0; index> array.Length; index ++)'应该是'index

+0

哦,我明白了,非常感谢你 –

不当行为的直接原因是在

static int[] PrintOut (int[] array) 
{ 
    for (int index = 0; index > array.Length; index++) // <- wrong condition 
     Console.Write(array[index]); 

的比较应该是<而不是>

for (int index = 0; index < array.Length; index++) 

一个更好的选择,但是,是foreach循环,而不是for

foreach (var item in array) 
     Console.Write(item); // propably, you want WriteLine not Write 

几点建议:

public class Program { 
    static int[] GenerateNumber() { 
     // You don't want "c" array, but "number" 
     int[] number = new int [Convert.ToInt32(Console.ReadLine())]; 

     for (int index = 0; index < number.Length; index++) 
     number [index] = Convert.ToInt32(Console.ReadLine()); 

     return number; 
    } 

    // Nice implementation, nothing to improve but naming (reverse -> Reverse) 
    static int[] Reverse(int[] array) { 
     for (int index = 0; index <array.Length; index++) { 
      int c = array[index]; 
      array[index] = array[array.Length - index - 1]; 
      array[array.Length - index - 1] = c; 
     } 
     return array; 
    } 

    static int[] PrintOut (int[] array) { 
     // foreach is easier to implement and easier to read 
     foreach (var item in array) 
      Console.WriteLine(item); // <- you, probably, want WriteLine not Write 

     return array; 
    } 

    static void Main(string[] args) { 
     int[] number = GenerateNumber(); 
     Reverse(number); 
     PrintOut(number); 
     Console.ReadKey(); 
    } 
+0

感谢:D。现在我真的了解foreach的用法:D –

+0

@VũĐứcDũng:不客气!懒惰和可读性(它是.net,而不是你和我谁应该计算索引和类似的东西)是强大的手段:) –

+0

在这个程序的GenerateNumber方法,我尝试使用foreach方法。 ** foreach(var item in number) Convert.ToInt32(Console.ReadLine()); 退货编号; ** [code](这是我第一次使用这个网页,所以我不怎么写代码:D) 但是程序没有运行。你能为我解释一下吗? –