2013-08-22 2 views
0

это мой первый пост, извинения за ошибки, которые я могу сделать и плохое форматирование.int whichAccount = int.Parse (Console.ReadLine()); не работает второй цикл

Проблема, с которой я сталкиваюсь, заключается в том, что во второй раз она петли int whichAccount = int.Parse (Console.ReadLine()); не работает и не будет принимать мои данные. Это вызывает исключение. «Строка ввода не была в правильном формате». При первом запуске все работает нормально. Что я делаю неправильно? Благодарю.

class ATM 
{ 

    const int SAVING_ACCOUNT = 1; 
    const int DEBIT_CARD = 2; 
    const int CREDIT_CARD = 3; 
    const int INVESTMENT_ACCOUNT = 4; 


    static double[] accountBalances = { 0.0, 1001.45, 850.0, -150.0, 10000.0 }; 

    static string[] accountNames = { "", "Savings Account", "Debit Card", 
             "Credit Card", "Investment Account" }; 


    static void Main() 
    { 
     char y; 

     do { 
      Console.Write("\tSAVING_ACCOUNT = 1;\n\tDEBIT_CARD = 2;\n\tCREDIT_CARD = 3;\n\tINVESTMENT_ACCOUNT = 4;\n\nPlease select account: "); 

      int whichAccount = Int32.Parse(Console.ReadLine()); 

      DisplayBalance(whichAccount); 

      Console.Write("\nDo you wish to see the balance of another account? Y/N: "); 
      y = (char)Console.Read(); 
     } while (Char.IsLetter(y)); 
    } 

    static void DisplayBalance(int whichAccount) 
    { 
     switch (whichAccount) 
     { 
      case 1: Console.WriteLine("\nAccount Balance of Savings Account = ${0}", accountBalances[1]); 
        DateTime date = DateTime.Now; 
        Console.WriteLine("Current Date: {0} ", date); 

       break; 
      case 2: Console.WriteLine("{0}", accountBalances[2]); 
       break; 
      case 3: Console.WriteLine("{0}", accountBalances[3]); 
       break; 
      case 4: Console.WriteLine("{0}", accountBalances[4]); 
       break; 


     } 
    } 

ответ

0

Проблема связано с y = (char)Console.Read();

Рассмотрите, используя следующие прочитать первый знак на входе. Он обеспечит чтение всего ввода, который не оставит никаких дополнительных символов или пустых пространств в остальном тексте консоли:

y = Console.ReadLine().Trim()[0]; 
+0

Huzzah это работает! Спасибо за быстрый ответ. Я это ценю. – user2281248

+0

@ пользователь2281248 проблем нет. Хотел бы я дать лучшее объяснение, но это нужно будет сделать :) – Inisheer

Смежные вопросы