我在使用if语句时遇到麻烦

时间:2020-03-12 00:27:35

标签: c++ c++11 if-statement expression

我不断收到“如果不是'if'之前有预期的初始化程序”错误,我想知道是否有人可以帮助我解决这个问题?我有此作业,基本上要求您与2个玩家一起玩剪刀石头布游戏。

#include <iostream>

int main()
{
  int x, y;

  std::cout << "Player 1 enter rock(1), paper(2), scissors(3):";
  std::cin >> x;
  std::cout << "Player 2 enter rock(1), paper(2), scissors(3):";
  std::cin >> y;
}
if ( x==1 ) and ( y==2 ) {
  std::cout << "Player 2 Wins! Paper Covers Rock!!\n";
}
else if ( x==1 ) and ( y==3 ) {
  std::cout << "Player 1 Wins! Rock Breaks Scissors!!\n";
}
else if ( x==1 ) and (x==1) {
  std::cout << "Tie with rock!\n";
}
else if ( x==2 ) and ( y==3 ) {
  std::cout <<  "Player 2 Wins! Scissors Cut Paper!!\n";
}
else if ( x==2 ) and ( y==1 ) {
  std::cout << "Player 1 wins! Paper Covers Rock!!\n";
}
else if ( x==2 ) and ( y==2 ) {
  std::cout << "Tie with Paper!\n"; 
}
else if ( x==3 ) and ( y==1 ) {
  std::cout << "Player 2 wins! Rock Breaks Scissors!!\n";
}
else if ( x==3 ) and ( y==2 ) {
  std::cout << "Player 1 wins! Scissors Cut Paper!!\n";
}
else if ( x==3 ) and ( y==3 ) {
  std::cout << "Tie with Scissors!";
}
else if (x>3){
 std::cout << "Invalid move!!\n";
}
else if (y>3){
  std::cout << "Invalid move!!\n";
}
return 0
}

4 个答案:

答案 0 :(得分:2)

所有代码必须位于main函数的{}中。

if代码必须带有()括起来的整个表达式。因此它是if ((x == 1) && (x == 2)) { ... }而不是if (x == 1) && (x == 2) { ... }

此外,使用&&代替and,并使用||代替or

答案 1 :(得分:2)

取下右括号

int main()
{
  int x, y;

  std::cout << "Player 1 enter rock(1), paper(2), scissors(3):";
  std::cin >> x;
  std::cout << "Player 2 enter rock(1), paper(2), scissors(3):";
  std::cin >> y;
}  // <===

if语句中的表达式应放在括号内,例如

if ( ( x==1 ) and ( y==2 ) ) {

答案 2 :(得分:0)

#include <iostream>
using namespace std;
int main()
{
  int x, y;

  cout << "Player 1 enter rock(1), paper(2), scissors(3):";
  cin >> x;
  cout << "Player 2 enter rock(1), paper(2), scissors(3):";
  cin >> y;

if ( x == 1  &&  y == 2 ) {
  cout << "Player 2 Wins! Paper Covers Rock!!\n";
}
else if ( x == 1  &&  y == 3 ) {
  cout << "Player 1 Wins! Rock Breaks Scissors!!\n";
}
else if ( x == 1  && y == 1) {
  cout << "Tie with rock!\n";
}
else if ( x == 2  &&  y == 3 ) {
  cout <<  "Player 2 Wins! Scissors Cut Paper!!\n";
}
else if ( x == 2  &&  y == 1 ) {
  cout << "Player 1 wins! Paper Covers Rock!!\n";
}
else if ( x == 2  &&  y == 2 ) {
  cout << "Tie with Paper!\n"; 
}
else if ( x == 3  &&  y == 1 ) {
  cout << "Player 2 wins! Rock Breaks Scissors!!\n";
}
else if ( x == 3  &&  y == 2 ) {
  cout << "Player 1 wins! Scissors Cut Paper!!\n";
}
else if ( x == 3  &&  y == 3 ) {
  cout << "Tie with Scissors!";
}
else

  cout << "Invalid move!!\n";

return 0;
}

我有我的教授帮助我,但谢谢你们的帮助!!

答案 3 :(得分:0)

“缩进错误”只需将主功能的右括号放在最后。

int main() 
{

//all your logic here
. 
. 

} // closing brace

您收到初始化错误,因为您已在if条件之前合上了主花括号,因此它不知道用x或y初始化的值是多少。