如果语句不显示结果

时间:2019-01-28 15:15:52

标签: c++

我正在学习C ++,我才刚刚开始。我们的教授希望我们编写一个“游戏”,该游戏根据用户输入(cin)使用不同的结果。如果您敲门,将会发生第一种情况。如果您不敲门就穿过门,将会发生两种情况。但是,当我在repl.it中测试代码时,我的if语句不会显示结果。有人可以看一下我的代码并帮助我找出原因吗?

#include <iostream>

using namespace std;

int main() {
  int walkOrKnock;

  cout << "Type in 'w' to walk through the door or 'k' to knock: ";
  cin >> walkOrKnock;
  cout << endl;

  if (walkOrKnock) {
    cout << "You walked through the door.";
  }
}

2 个答案:

答案 0 :(得分:3)

int walkOrKnock;

问题是您要求用户键入一个字符(w或k),但您的变量需要一个整数。

要解决问题,可以将WalkorKnock变量的类型更改为charstring

#include <iostream>

int main() {
  std::string walkOrKnock;

  std::cout << "Type in 'w' to walk through the door or 'k' to knock: ";
  std::cin >> walkOrKnock;
  std::cout << std::endl;

  if (walkOrKnock == "w") {
    std::cout << "You walked through the door.";
  }
}

答案 1 :(得分:2)

尝试一下

int main() {
  char walkOrKnock;

  cout << "Type in 'w' to walk through the door or 'k' to knock: ";
  cin >> walkOrKnock;
  cout << endl;

  if (walkOrKnock == 'w') {
    cout << "You walked through the door.";
  }
}

您的代码中有两个错误。首先,C ++中的所有内容都具有 type 。由于您的作业要求输入一个字符(w或k),因此正确的类型是char,而不是intint是整数)。

第二个错误是您没有对变量使用正确的测试

if (walkOrKnock) {

测试walkOrKnock是否为真(另一个情况为“真”)。但是,您想测试walkOrKnock是否等于'w',它的代码是

if (walkOrKnock == 'w') {

顺便说一下,好的变量名。