string medical = Console.ReadLine();
double subtotal = Convert.ToDouble(Console.ReadLine());
это запрашивает два ввода, первый Console.ReadLine();
устанавливает вашу строку медицинской.это хорошо.
допустим, я ввожу E
теперь медицинский = "E"
сейчас, прежде чем он попадет в ваш цикл, чтобы определить, что делать с "E"msgstr ", вы запрашиваете другой ввод и пытаетесь преобразовать его в двойной.я бы изменил вторую строку:
double subtotal = Convert.ToDouble(Console.ReadLine());
на
double subtotal = 0.0;
это даст вам начальное значение.если вам известна «стоимость процедуры», которую, как я полагаю, вы удваиваете, вы можете установить ее на то, что хотите, но если вы хотите запросить значение, используйте:
double subtotal = double.Parse(System.Console.ReadLine());
и то, как ваши вариантынастроить ....
Console.WriteLine("Employee only (E) ");
Console.WriteLine("Employee and spouse (S) ");
Console.WriteLine("Employee and children (C) ");
Console.WriteLine("Employee and family (F) ");
будет побуждать людей вводить заглавные буквы.это нормально, но вы проверяете только нижний регистр, я предлагаю:
if (vision == "e"||vision == "E")
РЕДАКТИРОВАТЬ: я забыл вам сказать, при работе с суммами в долларах, лучше всего использоватьdecimal
не double
.