#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. готово, извините, я здесь новичок, что задаю вопросы, я был просто зрителем.