2016-12-28 12 views
0

Я пишу программу о движении заднего хода массива с 3-мя способами (GenerateNumber, обратный и 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

О, я вижу, большое спасибо –

ответ

3

Непосредственной причиной проступка находится в

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ũ Đức Dũng: добро пожаловать! Лень и читаемость (это .net, а не вы и я, кто должен вычислять индексы и т. П.) Являются мощными средствами :) –

+0

в методе GenerateNumber этой программы, я пытаюсь использовать метод foreach. ** foreach (номер изделия в количестве) Convert.ToInt32 (Console.ReadLine()); номер возврата; ** [код] (это время, когда я использовал этот веб-сайт, поэтому я не знаю, как написать код: D) Но программа не запускается. вы можете объяснить это мне? –

 Смежные вопросы

  • Нет связанных вопросов^_^