Почему не правильно работает условие в C#

Нужно сделать проверку на корректность введенных данных, но цикл if не обрабатывает условие, почему?

Console.WriteLine("Введите название шкалы(C, K, F)"); 
     
                while (!Char.TryParse(Console.ReadLine(), out input)) 
                { 
                    if (input != 'C' || input != 'K' || input != 'F') 
                    { 
                        Console.WriteLine("Некорректные исходные данные"); 
                    } 
                }

Ответы (1 шт):

Автор решения: CrazyElf
if (input != 'C' || input != 'K' || input != 'F')
{ 
    Console.WriteLine("Некорректные исходные данные"); 
}

input не может ведь одновременно быть равным C, K и F, то есть одно их этих условий в любом случае выполнится, а поскольку у вас стоит "логическое или" ||, значит всегда выполнится этот if. Наверное, тут нужно поменять на "логическое и" &&:

if (input != 'C' && input != 'K' && input != 'F')
{ 
    Console.WriteLine("Некорректные исходные данные"); 
}

Далее. Цикл while тоже не без проблем.

while (!Char.TryParse(Console.ReadLine(), out input)) 

Этот цикл будет срабатывать только если не сработает TryParse, то есть если будет введён не одиночный символ. Таким образом, проверка if будет осуществляться только при неправильном вводе.

В общем, в вашем коде всё плохо. А как же нужно? Примерно так, используя "бесконечный цикл" и инструкцию break:

Console.WriteLine("Введите название шкалы(C, K, F)"); 

while (true) 
{ 
    if(Char.TryParse(Console.ReadLine(), out input))
    {
        if (input == 'C' || input == 'K' || input == 'F') 
        { 
            break;
        }
    }
    Console.WriteLine("Некорректные исходные данные"); 
}
→ Ссылка