#c# #visual-studio #windows-console
#c# #visual-studio #windows-консоль
Вопрос:
Я написал программу-калькулятор на C #.
Я хочу, чтобы моя программа завершилась (завершилась), если пользователь введет символ «x» в моем консольном приложении на C #.
Я пытался использовать return;
, но у меня не получается.
Также пытался вызвать Environment.Exit()
, но это тоже не сработало.
Если у кого-нибудь есть какие-либо советы, не стесняйтесь делиться! 🙂
Вот код, который обрабатывает ввод от пользователя:
Console.Write("Skriv in en siffra: ");
double firstUserInput;
while (!Double.TryParse(Console.ReadLine(), out firstUserInput))
{
Console.WriteLine();
Console.Write("Ogiltigt värde, skriv in en siffra: ");
}
while (true)
{
Console.WriteLine();
Console.Write("Välj räknesätt mellan - * / : ");
string operators = Console.ReadLine();
Console.WriteLine();
Console.Write("Skriv in en till siffra: ");
double secondUserInput;
while (!Double.TryParse(Console.ReadLine(), out secondUserInput))
{
Console.WriteLine();
Console.Write("Ogiltigt värde, skriv in en siffra: ");
}
Console.WriteLine();
Console.WriteLine();
switch (operators)
{
case " ":
Console.WriteLine();
Console.WriteLine("Svar: " firstUserInput " " secondUserInput " = " (firstUserInput secondUserInput));
firstUserInput = (firstUserInput secondUserInput);
Console.ReadLine();
Console.WriteLine();
break;
case "-":
Console.WriteLine();
Console.WriteLine("Svar: " firstUserInput " - " secondUserInput " = " (firstUserInput - secondUserInput));
firstUserInput = (firstUserInput - secondUserInput);
Console.ReadLine();
Console.WriteLine();
break;
case "*":
Console.WriteLine();
Console.WriteLine("Svar: " firstUserInput " * " secondUserInput " = " (firstUserInput * secondUserInput));
firstUserInput = (firstUserInput * secondUserInput);
Console.ReadLine();
Console.WriteLine();
break;
case "/":
if (secondUserInput == 0)
{
Console.WriteLine();
Console.WriteLine("Går inte att dividera med 0, försök igen!");
Console.ReadLine();
Console.WriteLine();
}
else
{
Console.WriteLine();
Console.WriteLine("Svar: " firstUserInput " / " secondUserInput " = " (firstUserInput / secondUserInput));
firstUserInput = (firstUserInput / secondUserInput);
Console.ReadLine();
Console.WriteLine();
}
break;
}
}
}
Комментарии:
1. Вы пробовали debbuging? Странно, что ни одно из ваших решений не сработало, может быть, вы никогда не доходите до того момента, когда вышли?
2. Ваш код не показывает обработку для
x
— где это?
Ответ №1:
Неясно, как Main
реализован ваш метод, но вы должны иметь возможность вызывать Environment.Exit
для выхода из приложения в любое время, например:
const string Exit = "x";
string line = Console.ReadLine();
while (!Double.TryParse(line, out firstUserInput))
{
if (string.Compare(line, Exit, true) == 0)
System.Environment.Exit(0);
Console.WriteLine();
Console.Write("Ogiltigt värde, skriv in en siffra: ");
}
while (true)
{
Console.WriteLine();
Console.Write("Välj räknesätt mellan - * / : ");
string operators = Console.ReadLine();
if (string.Compare(operators, Exit, true) == 0)
System.Environment.Exit(0);
Console.Write("Skriv in en till siffra: ");
double secondUserInput;
line = Console.ReadLine();
while (!Double.TryParse(line, out secondUserInput))
{
if (string.Compare(line, Exit, true) == 0)
System.Environment.Exit(0);
Console.WriteLine();
Console.Write("Ogiltigt värde, skriv in en siffra: ");
}
Console.WriteLine();
Console.WriteLine();
...
Комментарии:
1.
if (string.Compare(firstUserInput, Exit, true) == 0) System.Environment.Exit(0);
Я получаю сообщение об ошибке для firstUserInput, в котором говорится: аргумент 1 не может преобразовать из double в string?2. @Emil: Правильно, вам нужно сравнить возвращаемое значение
Console.ReadLine()
. Смотрите мою правку.3. С несколькими настройками это сработало как шарм! Спасибо 🙂
Ответ №2:
Я не вижу никаких обработок, включая «x».
Возможно, вы могли бы реализовать что-то вроде этого:
string str = Console.ReadLine();
if(str.Equals("x")) // Note that this is case sensitive
{
Enviroment.Exit(0);
}
И затем вы можете, скажем, добавить свой блок TryParse кода.