Я думаю, что математики еще не нашли целое число, которое может быть одновременно меньше 1 и больше 8.
while (height > 8 && height < 1);
Очевидно, вы имеете в виду
while (height > 8 || height < 1);
Но чтобы сделать такое условие более понятным для себя, иногда полезно сначала написать условие, по которому ищется число.
Вам нужно число, которое лежит в диапазоне [1, 8] то есть целевое число должно удовлетворять условию
1 <= height && height <= 8
В этом случае условие в операторе do-while будет отрицанием условия выше.
while ( !( 1 <= height && height <= 8 ) );
Теперь, если удалите отрицание, у вас будет
while ( !( 1 <= height ) || !( height <= 8 ) );
, что эквивалентно
while ( 1 > height || height > 8 );
Так что либо используйте
while ( !( 1 <= height && height <= 8 ) );
pr
while ( 1 > height || height > 8 );