我遇到的总体问题:我误会了如何使用循环/ if-else-if逻辑来正确验证菜单选择中的用户输入。我需要弄清楚自己在做的是概念上的错误,而不是技术上的错误(因为我们在课堂上如何处理程序有非常具体的规则)。
问题1 =程序启动时,用户有两个选择。如果两个选项均未选中,则显然需要响应用户输入了无效字符。我的问题是,当我进入无效选择屏幕时,只允许我按“ P”开始游戏,而不能按“ Q”结束游戏。我循环中的某件事仅接受“ P”作为有效的输入来推动程序前进。
我尝试在do / while循环和if / else if语句之间进行切换。 do / while循环提供的问题最少,同时仍然保留了一些问题。
我只是在第二门编程课上,所以我可能无法给出更好的详细答案,而我尝试了不同的循环并移动了一些代码,对不起。
我只打算发布程序的int main(),因为其中包含我遇到问题的菜单。还有一些其他功能可以让用户输入类似的问题,但是如果我在此处解决了概念性错误,可以在此之后进行解决。
int main()
{
char Sel;
int compChoice;
int playerChoice;
cout << "\n";
cout << "ROCK PAPER SCISSORS MENU" << endl;
cout << "------------------------" << endl;
cout << "p) Play Game" << endl;
cout << "q) Quit" << endl;
cout << "Please enter your choice:" << endl;
cin >> Sel;
if (Sel == 'q' || Sel == 'Q')
{
cout << "You have chosen to exit, thanks for playing" << endl;
}
do
{
if (Sel == 'p' || Sel == 'P')
{
playerChoice = getPlayerChoice();
compChoice = getComputerChoice();
if (isPlayerWinner(compChoice, playerChoice))
{
cout << "Winner Winner Chicken dinner" << endl;
}
else if (!isPlayerWinner(compChoice, playerChoice))
{
cout << "You lose this round" << endl;
}
else if (isTie(compChoice, playerChoice))
{
cout << "You have Tied" << endl;
}
else
{
cout << "Thanks for playing" << endl;
return 0;
}
}
else
{
cout << "Invalid selection, please try again by hitting 'p' or 'q'." << endl;
cin >> Sel;
}
} while (Sel != 'q' || Sel != 'Q');
system("PAUSE");
return 0;
}
感谢您的时间!
答案 0 :(得分:0)
罪魁祸首是do / while循环末尾的这一行。
while (Sel != 'q' || Sel != 'Q');
应为以下内容。
while (Sel != 'q' && Sel != 'Q');