Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2015, 21:17   #1
alwgel
Новичок
Джуниор
 
Регистрация: 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()”, но почему это так, понять не в состоянии.

Спасибо.
alwgel вне форума Ответить с цитированием
Старый 04.03.2015, 21:30   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 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
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
остановка цикла 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