我无法弄清楚为什么这不起作用。它似乎只是跳过if语句。我收到y
未初始化的错误,当我在if语句之前添加int y = 0;
时它始终为零。
也许我只是在忽略一些简单的事情?这是我的代码:
// ConsoleApplication9.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
enum MonsterType
{
MONSTER_ORC,
MONSTER_GOBLIN,
MONSTER_TROLL,
MONSTER_OGRE,
MONSTER_SKELETON,
};
int getUser()
{
std::cout << "Pick a door, 1 - 5 " << std::endl;
int x;
std::cin >> x;
return x;
}
std::string getMonName(int y)
{
if (y == MONSTER_ORC)
return std::string("Orc");
if (y == MONSTER_GOBLIN)
return std::string("Goblin");
if (y == MONSTER_TROLL)
return std::string("Troll");
if (y == MONSTER_OGRE)
return std::string("Ogre");
if (y == MONSTER_SKELETON)
return std::string("Skeleton");
else
return std::string("???");
}
void getMon(int x)
{
if (x == 1)
int y = 0;
if (x == 2)
int y = 1;
if (x == 3)
int y = 2;
if (x == 4)
int y = 3;
if (x == 5)
int y = 4;
std::cout << "You see a " << getMonName(y) << "\n";
}
int main()
{
int x = getUser();
getMon(x);
return 0;
}
答案 0 :(得分:2)
试试这个:
int y = 0; // Declare and initialize y here!
if (x == 1)
y = 0; // No int before y
对于其他情况,等等,以便在y
范围之外看到if
。我建议使用以下语法:
int y = 0;
if (x == 1)
{
y = 0;
}
以便更清楚地确定范围。
答案 1 :(得分:1)
在getMon中,在每个可能产生问题的if语句中声明和销毁y。相反,您可以以类似的方式重写该功能。
void getMon(int x) {
int y = (x >=1 && x<=5) ? x-1:0;
std::cout << "You see a " << getMonName(y) << "\n";
}