2016-03-22 3 views
0

В следующем случае код внутри шкафа «c» не выполняется. Ничего не произошло! Если вход «q», isOwner = false выполняется просто отлично. Для меня это не имеет смысла. Пожалуйста помоги!Код внутри простого корпуса коммутатора или оператор if не выполняется

// Customer information 
string customerName = ""; 
string customerPassword = ""; 
int customerCredits = 0; 

string input = ""; 

Console.WriteLine ("Welcome to my console Pet Store"); 
Console.WriteLine ("Type in your name?"); 
customerName = Console.ReadLine(); 
Console.WriteLine ("Type in your password?"); 
customerPassword = Console.ReadLine(); 

if (customerName == "owner" && customerPassword == "1234") { 

    bool isOwner = true; // Launch the owner interface when isOwner is true 

    while (isOwner) { 
     Console.Clear(); 
     Console.WriteLine ("You are logged in as Owner"); 
     Console.WriteLine ("[q] Quit"); 
     Console.WriteLine ("[c] Create new product"); 
     Console.WriteLine ("[d] Create new animal"); 
     Console.WriteLine ("[i] View all items in the store"); 
     Console.WriteLine ("[t] View all customers"); 

     // string input; 
     input = Console.ReadLine(); 

     switch (input) { 
      case "q": 
       isOwner = false; 
       break; 
      case "c": 
       Console.Clear(); 
       Console.WriteLine ("What type of product do you want to create?"); 
       break; 
     } 
    } 
} // END of owner interface 

Btw: Ive также пробовал то же самое с утверждением if, но с тем же результатом.

Im довольно новый для C#, так что голый со мной, если я пропустил что-то очевидное здесь.

+0

Вход = Console.ReadLine(); - Вы вводите ввод и нажимаете клавишу ввода, когда оно доходит до этой точки? –

+2

Соблюдайте осторожный код. Когда вы доберетесь до 'case 'c" ', вы очистите консоль и спросите, какой продукт создать. Затем вы * сразу * возвращаетесь к началу цикла while ('while (isOwner)'), снова очищаете консоль, а затем распечатываете меню. Ваш код * выполняется *, но вы очищаете консоль так быстро, что не увидите ее. Я бы предложил удалить 'Console.Clear()', пока вы отлаживаете – Rob

+0

, это действительно помогло мне выяснить, в чем проблема, спасибо! – Kvisgaard

ответ

0

Код работает, он просто не ждет после того, как он отобразит приглашение. Попробуйте добавить что-то вроде Console.ReadKey(); после печати строки: Console.WriteLine("What type of product do you want to create?").

switch (input) { 
     case "q": 
      isOwner = false; 
      break; 
     case "c": 
      Console.Clear(); 
      Console.WriteLine("What type of product do you want to create?"); 
      Console.ReadKey(); 
      break; 
    } 
+0

Да, именно это было и тем, что я узнал, пробовав другие методы с помощью цикла. Он эксцестировал мой код, но потому, что он не дождался, когда какой-либо ввод будет удален до конца очень быстро. Console.ReadLine(); работал – Kvisgaard

0

Выглядит странно. Но у меня есть предположение: Возможно ли, что char 'c' не является английским? Многие языки имеют похожие буквы, но эти буквы имеют разные коды.

Попробуйте удалить 'c' и введите его еще раз.

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