Оператор

#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