【发布时间】:2018-02-25 07:54:54
【问题描述】:
//a 是一个整数,但如果在运行时按下字母表,代码将继续运行而无需任何输入,而是显示无效输出并再次重复循环。
for (int j = 0; j <= 8; j++)
{
if (j % 2 == 0){
boad(arr);
cout << "Player 1's turn " << endl << "Enter your position :";
cin >> a;
if (a == 0 || a == 1 || a == 2 || a == 3 || a == 4 || a == 5 || a == 6 || a == 7 || a == 8)
{
arr[a] = 'O';
check(arr);
}
else
{
cout << "invalid output";
j = j - 1;
}
}
}
【问题讨论】:
-
不是一个真正的解决方案,但可能希望将其更改为
if(0 <= a && a < 9) -
那是因为当你按下字母时,它对应的 ASCII 码位于变量 'a' 中,(a-z => 65-90, A-Z => 97-122),因此跳过了 if 块。
-
@JeffinManuel 他在问,为什么在给出无效输出时 else 块没有运行。
-
我不确定您实际上在问什么,尽管我认为 Felix 猜得不错。请展示你的输出,解释你不喜欢它的什么地方,并可能展示你想要的输出。
-
@Yunnosch 当我按下一个字母时它会完成它的循环而不要求输入并关闭。