2016-12-01 3 views
1

Привет, ребята, я хочу, чтобы проверить, если вход пользователя (String) не равен булево, но, по-видимому, не может сделать это:Как проверить, если строка не равняется булевы

Например:

using System; 
using System.Linq; 

namespace SymbolCheck 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      String symbol = Console.ReadLine(); 
      int value; 
      bool isVowel = "aeiouAEIOU".IndexOf(symbol) >= 0; 

      if (int.TryParse(symbol, out value)) 
      { 
       Console.WriteLine("Input is a number: " + symbol); 
      } 

      else if (symbol.Equals(isVowel) & symbol.Any(char.IsUpper)) 
      { 
       Console.WriteLine("Input is a uppercase vowel: "+ symbol); 
      } 

      else if (symbol != isVowel) 
      { 
       Console.WriteLine("Input is a consonant: "+ symbol); 
      } 

....

Я получил способ обойти это, но хочу знать, если есть другой способ сделать это:

else if (symbol.Equals(isVowel) & symbol.Any(char.IsLower)) 
    { 
     Console.WriteLine("Input is a lowercase vowel: "+ symbol); 
    } 

    else if (!int.TryParse(symbol, out value) & symbol.Any(char.IsUpper)) 
    { 
     Console.WriteLine("Input is a uppercase consonant: " + symbol); 
    } 

...

+0

'isVowel.ToString();' не делает ничего полезного, если вам не присваивайте его переменной – Sayse

+0

Да, true. Извините, забыл удалить его. Я просто экспериментировал в какой-то момент :) – sylvann

+0

Typo: 'input' вместо' imput' –

ответ

2

Возможно, вам захочется проверить, являются ли оба условия истинными: используйте символ &&. Furtherfore ваш isVowel является логическим, так что используйте, что непосредственно (symbol.Equals(isVowel.ToString() не имеет никакого смысла)

if (isVowel) && symbol.Any(char.IsUpper)) 

Другой чек будет

if (!isVowel) 
+0

Спасибо, я получил свои ответы – sylvann

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