Почему консоль закрывается после ввода Да?
Я делал калькулятор на C#. Вот часть умножения ---
using System;
static class calculator
{
public static void Main()
{
welcome:
Console.WriteLine("Welcome to my calculator, please press enter to continue");
Console.ReadLine();
Console.WriteLine("Do you want to add, subtract, multiply or divide?");
string x = Convert.ToString(Console.ReadLine());
if (x == "multiply")
{
Console.WriteLine("Please enter the first value");
decimal value1multiply = Convert.ToDecimal( Console.ReadLine());
Console.WriteLine("Please enter the second value" );
decimal value2multiply = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Result =");
Console.WriteLine(value1multiply * value2multiply);
Console.WriteLine("Thank you for using my calculator!Do you still want to use it?Please answer in 'yes' or 'no' and press 'enter'");
Console.ReadLine();
string yesorno =Console.ReadLine();
if (yesorno == "yes")
{
goto welcome;
}
if (yesorno == "no")
{
Environment.Exit(0);
}
}
}
}
Когда я спрашиваю "да", консоль должна вести меня к приветствию. Но вместо этого он никуда меня не ведет и остается пустым. Когда я снова нажимаю Enter, консоль закрывается. Почему это происходит и как я могу предотвратить это?
Что я пробовал:
Я попытался удалить environment.exit(0), думая, что консоль привела меня к этому, но это не помогло. Я даже пытался набрать код в Visual Studio, но без разницы в результате. (Я использую резкое развитие)
1 ответ
Помимо использования goto
, который часто осуждается, вы используете один слишком много ReadLine
вызов.
Вот:
Console.ReadLine();
string yesorno = Console.ReadLine();
Может быть, вы набрали yes
и затем дважды нажмите Enter. В таком случае yesorno
будет пустым, и ваш чек потерпит неудачу. Первая запись проглочена первой ReadLine
это не было присвоено переменной.