2012-07-15 5 views
0

Я работаю над простым консольным приложением для хранения паролей в C#.Если утверждения всегда передаются в оператор else

У меня проблема с разделом, который спрашивает, хочет ли пользователь замаскировать все записи паролей из этой точки.

Это часть кода:

bool tryagain = true; 
while(tryagain == true) 
{ 
    Console.WriteLine("Would you like to mask all other password entiries?(Y,N)"); 
    string input = Console.ReadLine(); 
    if (input == "y" | input == "Y") 
    //Something wrong, always passes to Your awnser was invalid 
    { 
     maskpass = true; 
     tryagain = false; 
    } 

    if (input == "n" | input == "N") 
    { 
     maskpass = false; 
     tryagain = false; 
    } 
    else 
    { 
     Console.WriteLine("Your awnser was invalid, would you like to try again?"); 
     string yesno = Console.ReadLine(); 
     if (yesno == "y" | yesno == "Y") 
     { 
      tryagain = true; 
     } 

     if (yesno == "n" | yesno == "N") 
     { 
      Environment.Exit(0); 
     } 
    } 
} 

Проблема заключается в том, когда я запускаю код всегда работает на заявление другого.

Я уверен, что ошибка очень проста, и я просто незнаю, но у кого-нибудь есть идеи о том, что происходит здесь?

+0

, если вы хотите выполнить ИЛИ, не используйте один | но вы должны использовать double || , например. 'input ==" y "|| input == "Y" ' –

+0

использовать' Equals' вместо '==' –

+0

@juergend Как это поможет ..? – Daniel

ответ

7

Использовать || вместо одного |. Значение || означает или условное, но единственное | is двоичное или.

Я предположить, что логика вашего кода говорит:

if input=='y' OR input=="Y", сделать что-то.

Еще одно предложение. Если мое предположение права, вы можете achiev, что с простой String.Equals перегрузки:

if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase) 
{ 
    //do something/ 
} 
+0

Это именно то, что я искал, спасибо. – qwesr

+1

@qwesr Вы должны принять ответ, который вам помог .. – Daniel

0

Вы можете использовать || или вы можете использовать метод String class String.equals. Поскольку это строка, которую вы читаете как ввод, лучше используйте метод String.equals

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