2014-12-16 2 views
-2

Как разрешить пользователю нажимать enter и показывать ему неправильное, а не показывать ошибку. Когда в программе пользователь может нажать клавишу ввода без ввода информации, а системные сбои выдают ошибку System.FormatException, в которой я не знаю, как исправить. Любая помощь будет принята с благодарностью, и я благодарю вас за чтение.Как разрешить пользователю нажимать ввод без iformation без сбоев, а для него показывать неправильное, а не показывать ошибку.

double price, discount, answer, disprice, fahr, celc, celc2, fahr2; 
     char test, choice; 
     double Merc, mars, nept, uran, jup, sat, pluto, moon, venus; 
     do 
     { 
      Console.WriteLine("Choose from the following:"); 
      Console.WriteLine("A: Mecury "); 
      Console.WriteLine("B: Venus "); 
      Console.WriteLine("C: Mars "); 
      Console.WriteLine("D: Jupitar"); 
      Console.WriteLine("E: Saturn "); 
      Console.WriteLine("F: Uranus "); 
      Console.WriteLine("G: Neptune "); 
      Console.WriteLine("H: Pluto "); 
      Console.WriteLine("I: Moon "); 
      Console.WriteLine("Z: Help "); 
      Console.WriteLine("Q: to quit the program"); 
      choice = char.Parse(Console.ReadLine()); 

      switch (choice) 
+0

также это поможет, если вы показать, какой метод '|| Событие' этот код вызывается в ... – MethodMan

ответ

0

Вместо использования char.Parse(), попробуйте char.TryParse():

.... 
Console.WriteLine("Q: to quit the program"); 
if (!char.TryParse(Console.ReadLine(), out choice) 
{ 
    continue; // Assuming your do/while loop will just loop. Might need to modify the while condition 
} 

switch (choice) 
... 
+0

Большое вам спасибо! – mitch2161998

0

Parse всегда будет бросать, если вы передаёте данные барахла.

Вы можете поймать:

try 
{ 
    choice = char.Parse(...); 
} 
catch (FormatException ex) 
{ 
    //Display error 
} 

Или использовать TryParse, который не бросает:

if (char.TryParse(..., out choice)) 
{ 
    //Value in choice 
} 
else 
{ 
    //Parse Failed 
}