Проблема: Я хочу перезапустить кодовый блок после сообщения об ошибке.
Console.Write("\tBitte geben Sie ihre erste Zahl ein: ");
if (!double.TryParse(Console.ReadLine(), out zahl1))
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen an!");
Вы пытались поместить это в цикл while?
Вы можете просто изменить свой if
на while
:
Console.Write("\tBitte geben Sie ihre erste Zahl ein: ");
while (!double.TryParse(Console.ReadLine(), out zahl1))
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen an!");
Это будет «работать», но пользователю не будет предложено снова ввести число, поэтому он не будет знать, что нужно снова печатать на консоли.
Вы правы, сообщение в последней строке можно отредактировать, чтобы спросить еще раз (пожалуйста, повторите попытку), к сожалению, я не говорю по-немецки.
Было бы очень просто:
Console.Write("\tBitte geben Sie ihre erste Zahl ein: ");
while (!double.TryParse(Console.ReadLine(), out zahl1))
{
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen an!");
Console.Write("\tBitte geben Sie ihre erste Zahl ein: ");
}
Вы должны убедиться, что запрашиваете пользователя снова, иначе он не узнает, что ему нужно ввести другой номер.
Это плохой пример. Вы повторяете код (вызовы Console.Write
)
@ Адриан Для целей ОП я думаю, что было бы неплохо повторить это, так как он новичок. Гораздо проще понять, что происходит, позже можно провести рефакторинг, чтобы включить просто распечатку сообщения в одном месте.
Используйте петлю do ... while
:
bool error;
do
{
Console.Write("\tBitte geben Sie ihre erste Zahl ein: ");
error = !double.TryParse(Console.ReadLine(), out zahl1);
if (error)
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen an!");
} while(error);
Вы пробовали использовать цикл while?