#c#
Вопрос:
Эта программа угадывает число из кубика (1,6) Пользователя против вражеского компьютера. Поэтому моя проблема в том, верны ли предположения пользователя и компьютера. Но я застрял на оператореamp;amp;, который нельзя применить к операндам.
class Program { static void Main(string[] args) { bool isCorrectGuess = false; Random random = new Random(); int enemyRandomNum; int randomNum = random.Next(1, 6); Console.WriteLine("Welcome to the dice number guessing game!"); Console.WriteLine("A number between 1 and 6 will be generated."); Console.WriteLine("Who guess the correct number will have 1 point."); Console.WriteLine("---------------------------------------------------"); while(!isCorrectGuess) { Console.WriteLine("Please enter your guess."); int playerGuess = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("..."); System.Threading.Thread.Sleep(1000); Console.WriteLine("Enemy AI will now have a guess. "); Console.WriteLine("..."); System.Threading.Thread.Sleep(1000); enemyRandomNum = random.Next(1,6); Console.WriteLine("Enemy AI rolled " enemyRandomNum); // here is the error if (playerGuess amp;amp; enemyRandomNum gt; randomNum) { } } } }
Комментарии:
1.
playerGuess
это своего родаint
. Вы не можете использовать это непосредственно в условном операторе. ИспользуйтеplayerGuess gt; 0
или около того.
Ответ №1:
Этот:
if (playerGuess amp;amp; enemyRandomNum gt; randomNum)
Семантически означает:
Если
playerGuess
это правда
и
enemyRandomNum
больше, чемrandomNum
Но не playerGuess
может быть true
, потому что это не логическое значение, это целое число. Если вы хотите проверить, больше ли оба этих значения randomNum
, то вам нужно указать, что:
if (playerGuess gt; randomNum amp;amp; enemyRandomNum gt; randomNum)
Комментарии:
1. Джоэл, я отредактирую код. Пожалуйста, потерпи меня. Мне нужно показать, у кого есть правильное предположение, и у него будет 5 матчей, и кто наберет 5 очков, выиграет игру.
2. пожалуйста, ознакомьтесь с обновленным кодом.
3. @Joel Coehoorn пожалуйста, ознакомьтесь с обновленным кодом.
4. @McDz: Если у вас есть новый вопрос, который вы хотите задать, лучше всего сделать это, опубликовав совершенно новый вопрос. Изменение кода в этом вопросе таким образом, чтобы он больше не содержал проблему, о которой вы спрашивали, делает вопрос запутанным и бесполезным для будущих читателей.
5. ладно, извини, я виноват. Спасибо Тебе!
Ответ №2:
playerGuess
является целым числом, но вы рассматриваете его как bool. Попробуйте что-нибудь вроде
(playerGuess gt; 0) amp;amp; (enemyRandomNum gt; randomNum)
Другое решение заключается в том, что вы можете преобразовать playerGuess
в bool. Попробуй
bool b = Convert.ToBoolean(playerGuess);
или
bool b = playerGuess != 0;
Комментарии:
1. Спасибо Тебе! @eglease