我尝试制作一个简单的程序,向用户提出一个问题,如果用户回答正确,它会告诉他们他们是正确的,但如果他们不正确,它会告诉他们再试一次,然后代码再次运行.我使用 while 循环来完成此操作,如果他们回答正确,则它会跳出 while 循环。但是当我测试它时,即使我得到了正确的答案,它也不会跳出循环。
#include <iostream>
int main() {
int answer;
while (1 < 2) {
std::cout << "What is 3 + 5?";
answer = std::cin.get();
if (answer == 8) {
std::cout << "You are correct!";
break;
}
else {
std::cout << "Wrong answer! Try again";
}
}
}
答案 0 :(得分:2)
因为 get
函数返回一个字符。
不存在字符 '8'
等于整数 8
的现有编码。
或者您需要将字符转换为其对应的整数:
(answer - '0') == 8
或与字符比较:
answer == '8'
如果你真的想读取整数,那么我建议你使用输入操作符 >>
来读取:
std::cin >> answer;
答案 1 :(得分:2)
我认为你应该这样分配答案:
std::cin >> answer;
因为 get 函数以字符串形式获取输入,而您的答案变量是 int。
所以在 if 语句中,它检查 "8" == 8
并返回 false。
总结一下,整个代码一定是这样的:
#include <iostream>
int main() {
int answer;
while (1 < 2) {
std::cout << "What is 3 + 5?";
std::cin >> answer;
if (answer == 8) {
std::cout << "You are correct!";
break;
}
else {
std::cout << "Wrong answer! Try again";
}
}
}