Проверка, какой тип символа является символом юникода - PullRequest
0 голосов
/ 12 июня 2018

Я запускаю программу CodeEasy.net на c # и натолкнулся на проблему, с которой я борюсь.Я не понимаю, почему это не проходит.

Напишите программу, которая читает из консоли один символ, используя методы Console.Read () и Convert.ToChar (...).После этого программа должна вывести «Цифра», «Буква» или «Не цифра и не буква» на экран, в зависимости от того, что это за символ.

Я пробовал int charCode = int.Parse(Console.ReadLine());также вместо int charCode = Console.Read(); но ничего не работает.Он продолжает давать мне первый результат «если» и последний «еще», но должен печатать только один из них, так что это очень запутанно.

Вот мой код:

int charCode = Console.Read();
char theRealChar = Convert.ToChar(charCode);

if (char.IsDigit(theRealChar))
{
    Console.WriteLine("Digit");
}
if (char.IsLetter(theRealChar))
{
    Console.WriteLine("Letter");
}
else
{
    Console.WriteLine("Not a digit and not a letter");
}

Любая помощь, чтобы заставить меня понять это очень ценится!

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Ваш else оператор только связан со вторым if оператором.Вы фактически получили:

if (firstCondition)
{
    // Stuff
}

// You could have unrelated code here

if (secondCondition)
{
    // Stuff
}
else
{
    // This will execute any time secondCondition isn't true, regardless of firstCondition
}

Если вы хотите, чтобы он выполнялся только в том случае, если ни из более ранних if операторов, вам нужно, чтобы второе было else if:

if (char.IsDigit(theRealChar))
{
    Console.WriteLine("Digit");
}
// Only check this if the first condition isn't met
else if (char.IsLetter(theRealChar))
{
    Console.WriteLine("Letter");
}
// Only execute this at all if neither of the above conditions is met
else
{
    Console.WriteLine("Not a digit and not a letter");
}
0 голосов
/ 12 июня 2018

Кажется, работает нормально, когда вы добавляете недостающий else перед вторым if блоком.

if (char.IsDigit(theRealChar))
{
    Console.WriteLine("Digit");
}
else if (char.IsLetter(theRealChar))
{
    Console.WriteLine("Letter");
}
else
{
    Console.WriteLine("Not a digit and not a letter");
}
...