|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.03.2015, 21:17 | #1 |
Новичок
Джуниор
Регистрация: 04.03.2015
Сообщений: 1
|
остановка экрана c#
Пытаюсь освоить программирование на примере c# по «самоучителю «C#/ Начала программирования» Ишкова Э.А.
Одна из первых программок – Остановка экрана: {Console.WriteLine("press any key"); char f = (char)Console.Read();}, которая вставляется в конце функции Main для того, чтобы можно было полюбоваться на результат. Иногда это прокатывает: //файл part\1_04.cs /*автоматическое и явное приведение типов * в арифметических выражениях*/ using System; namespace ConsoleApplication4 { class Program { public static void Main() { byte @byte = 12, byte1 = 238; Console.WriteLine("@byte=" + @byte + " @byte1=" + @byte1+"\n"); int @int = @byte - @byte1; Console.WriteLine("@int="+@int+"\n" ); @int = -44; Console.WriteLine(@int + "\n\r\r\r" + (byte)@int + "\r\r\r\n " + (uint)@int + "\r\n" + (long)@int+"\n\r"); char @char = '&', @char1 = '1'; Console.Write(@char+ " " +(int)@char + "\n"+ @char1+" " +(int) @char1); @int = @char + @char1; Console.Write(" сумма кодов=" + @int); char @char2 = (char)@int; Console.Write(" (char) сумма кодов=" + @char2+"\n\n"); @byte = 21; @int = 2147483640; Console.Write(@byte+" " + @int + "\n\n"); int @int1 = @byte + @int; long @long = @byte + (long)@int; Console.Write(@int1+" " + @long + "\n\n"); long @long1 = @int1 + @long; Console.Write(" " + @long1 + "\n\n"); Console.Write("Press any key to continue"); char f = (char)Console.Read(); } } } А иногда нет: //файл part1\1_06.cs //Структура выбора if/else using System; namespace ConsoleApplication6 { class Program { public static void Main() {int i=1; double mg,mc,x,z; char mark;// метка для выбора double cc=180.000/3.1416;// перевод рад. в град. z=-55.5;//заданный угол в рад. x=Math.Abs(z)*cc; //перевод из рад. в град. без знака if (z<0) i=-1; //сохранение знака Console.WriteLine("Введите одну из меток:g или c"); mark=(char) Console.Read(); //ввод метки if (mark == 'g') //вывод в град. {mg = i * Math.Floor(x + 0.5); Console.WriteLine(z + " радиан соответствует " + mg + " угл.град.");} else if (mark == 'c') // вывод в секундах {mc = i * Math.Floor(x * 60 * 60 + 0.5); //перевод град. В сек., арифм. округление Console.WriteLine(z + " радиан соответствует " + mc + "угл. сек.");} else if (mark!='g' || mark!='c') Console.WriteLine("Неизвестная Мета!"); Console.WriteLine("press any key to continue"); char f=(char) Console.Read(); Console.WriteLine(f); } } } Последние две строчки кода игнорируются и консоль сразу после выполнения закрывается. Почему? Я догадываюсь, что это, скорее всего, происходить из-за того, что выше по тексту уже есть строка с использованием функции “Console.Read()”, но почему это так, понять не в состоянии. Спасибо. |
04.03.2015, 21:30 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Посмотрите значение f, например в дебагере
http://msdn.microsoft.com/en-us/library/y740d9d3.aspx http://www.codeproject.com/Articles/...tudio-A-Beginn http://www.dotnetperls.com/debugging там \r, от \r\n То есть вы ввели 3 символа (g, \r, \n), а прочитали только один в первом Read, вот оставшиеся сразу и читаются при следующих Read. Чтобы избежать этого можно было читать символ с помощью ReadLine, либо в конце для остановки вместо Read использовать ReadKey.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
остановка цикла | Emperator12 | Общие вопросы Delphi | 2 | 06.10.2012 12:49 |
остановка цикла | dgoc | Помощь студентам | 7 | 28.06.2011 02:18 |
Остановка с условием | Elvisnya | Общие вопросы Delphi | 1 | 30.03.2011 22:11 |
Остановка выполнения | Artanis | Общие вопросы C/C++ | 1 | 20.12.2009 18:13 |
Остановка служб. | SanekIrk | Win Api | 5 | 23.10.2009 13:37 |