разрыв цикла while и не выводит результат c#

#c# #loops #for-loop #while-loop #break

Вопрос:

Я новичок в c# и тренируюсь на codeforces и SPOJ, чтобы научиться решать проблемы, проблема со мной в том, что когда цикл прерывается, не печатаются все входные данные, это просто завершает программу без печати

пожалуйста, может кто-нибудь сказать мне, в чем ошибка в этих 2 кодах, которые я пишу >

вход: 1,2,8,42 ,99 Выход: 1,2,88

 class Program   {   static void Main(string[] args)  {  Console.WriteLine("please enter an integer number in two digits");   int numbers;  int[] array_num = new int[100];   string nu = "";  int i =1;    while(i<100)  {  numbers = int.Parse(Console.ReadLine());  nu  = numbers;  array_num[i] = numbers;     if(array_num[i]<array_num[i-1])   {  Console.WriteLine("the numbers is "  nu  "");  break;  }   i  ;      }    }   }  

и я делаю это в цикле и с той же проблемой

 static void Main(string[] args)  {  Console.WriteLine("please enter an integer number in two digits");   int numbers;  int[] array_num = new int[50];   string nu = "";   for (int i = 1; i <= array_num.Length; i  )  {  numbers = int.Parse(Console.ReadLine());  nu  = numbers;  array_num[i] = numbers;    if (array_num[i] < array_num[i - 1])  {   Console.WriteLine("the number is "   nu   "");    break;  }    }   }  

в чем же заключается ошибка?

Комментарии:

1. Что ты пытаешься сделать? Каков ваш ожидаемый результат? break завершает цикл, поэтому вы больше не будете печатать строки. continue подводит вас к следующей итерации-это то, что вы пытаетесь сделать?

2. Непонятный. Вы хотите, чтобы он напечатал весь массив — даже числа после того, которое удовлетворяет условию?

3. мне нужно завершить ввод с условием if , поэтому, если условие истинно, выведите входные данные и остановитесь

Ответ №1:

Отвечая на «…проблема в том, что при разрыве цикла не выводятся все входные данные, это просто завершение программы…»:

Это потому, что после того, как вы разорвали цикл, больше не нужно выполнять код — поэтому консоль закрывается. Вы можете добавить Console.ReadKey() или Console.ReadLine() в конце Main метода сохранить консоль открытой после разрыва цикла. Console.ReadKey() подождал бы, пока вы нажмете любую клавишу, Console.ReadLine() подождал бы, пока вы что-нибудь введете, и нажал бы Enter (или просто нажмите Enter). Или в обоих случаях консоль будет оставаться открытой до тех пор, пока вы не закроете ее вручную.

 static void Main(string[] args) {  // ...  for (int i = 1; i <= array_num.Length; i  )  {  // ...  if (array_num[i] < array_num[i - 1])  {  Console.WriteLine("the number is "   nu   "");  break;  }  }    Console.ReadKey(); // Here Console will wait until you press any key and will stay opened }  

Комментарии:

1. большое вам спасибо за вашу помощь , у меня есть еще один вопрос, есть ли другой способ распечатать выходные данные и вместо этого отключить консоль (ReadKey)?

2. Как я уже сказал в aswer, вы можете использовать Console.ReadLine() , это немного похоже на ReadKey() . Это самый простой способ сохранить консоль открытой. Другие способы более специфичны или сложны и не являются предпочтительными для общего использования.

3. @leena almasnour отметьте ответ как полезный, если он решит или поможет решить ваш вопрос.

4. готово, извините, я здесь новичок, что задаю вопросы, я был просто зрителем.