我正在尝试创建一个循环,向用户询问坐标,然后打印这些坐标(如果它们在 [1, 3] 范围内)。如果它们超出范围,则会打印错误消息。如果输入是“q”,则会打印“退出”。
我将 x 和 y 定义为 int,但 'q' 是 char。这种重新定义应该如何进行?
#include <iostream>
using namespace std;
int main()
{
int x; int y;
while (true) {
cout << "Enter coordinates (x, y): ";
cin >> x >> y;
if (x >= 1 && x <= 3 && y >= 1 && y <= 3) {
cout << "Removing " << x << " " << y << endl;
}
else if (char x = 'q') {
cout << "Quitting" << endl;
break;
}
else cout << "Out of board" << endl;
}
}
一种更简单的方法只是要求用户在单独的提示中输入“q”。您要求输入 int:
int x; int y;
cin >> x >> y;
然后检查用户是否输入了字符,即“q”:
else if (char x == 'q') // == for comparison
你可以做的是使用一个临时变量最初将x存储为字符,检查它是否是q,然后继续:
char tempX;
cin >> tempX;
if ( tempX == 'q' ) {
cout << "Quitting" << endl;
break;
}
x = tempX - '0'; // for converting tempX to an int.
cin >> y;
有关字符转换的更多信息,您可以阅读这里。
主要问题隐藏在这个表达式中:
else if (char x = 'q')
您似乎想将变量 x 转换为
char
类型并检查它是否等于“q”。
首先,如果要转换变量,则需要将类型括在括号中。
其次,您必须使用相等运算符 ==
,单个 =
是赋值运算符。
一种可能的解决方案可能如下所示:
else if ((char) x == 'q')
// ...