В программе у вас символы закодированы в utf-8, а из консоли вы считываете в cp866. Естественно, условия в if не срабатывают. Решение в лоб относительно простое - указать кодировку потока ввода:
BufferedReader stdInBReader = new BufferedReader(new InputStreamReader(System.in, "cp866"));
Но у этого решения есть существенный минус - пропадает кроссплатформенность, основная фишка Java. Это решить уже сложнее. Придётся либо получать кодировку от пользователя в качестве параметра:
String encoding = System.getProperty("console.encoding", "utf-8");
BufferedReader stdInBReader = new BufferedReader(new InputStreamReader(System.in, encoding));
Теперь пользователь может указать кодировку при запуске
java -Dconsole.encoding=cp866 Ex
а если не укажет, то будет utf-8.
Либо использовать грязный хак, который может не работать на JVM отличных от HotSpot или не работать на других версиях HotSpot:
import java.io.Console;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
public class Ex {
private static final String encoding;
static {
String e = null;
try {
final Class<Console> clazz = Console.class;
final Method method = clazz.getDeclaredMethod("encoding", new Class[0]);
method.setAccessible(true);
e = (String) method.invoke(null);
}
catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException exc) {}
finally {
encoding = e;
}
}
public static void main(String[] args) throws IOException {
BufferedReader stdInBReader = new BufferedReader(new InputStreamReader(System.in, encoding));
}
}