这可以在Switch Statement上实现吗? (C ++)

时间:2013-10-22 14:57:27

标签: c++ integer switch-statement case-study

int main()
{
    int cstats, choice;
    int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
    cout << "Please choose your specialty: ";
    cout << "[1] Offense [2] Magic [3] Defense [4] Speed";
    switch(cstats)
    case 1:
        atk = 15;
        def = 5;
        agi = 5;
        break;
}

这是我在开始时的路线。正如您在代码中看到的那样。我想使用switch语句有一个不同的整数,但是当我总是把它打破;继续下一个案例我总是遇到问题。是否可以使用switch对整数进行选择?或者我做错了?我正在为我的案例研究制作一个基于文本的游戏,以便在周五通过。

先谢谢。干杯!

3 个答案:

答案 0 :(得分:1)

您的语法有点偏离 - 您需要将switch块括在花括号中:

switch(cstats)
{
    case 1:
        atk = 15;
        def = 5;
        agi = 5;
        break;
}

答案 1 :(得分:1)

除了switch语句中缺少大括号外。 cstats未定义,在以某种方式定义之前读取它是未定义的行为。

在此处了解如何从命令行获取整数:http://www.cplusplus.com/forum/articles/6046/

顺便说一下,你应该总是定义你的变量,最好是在初始化时,它更安全,并且当你有数千行代码时更容易调试,而且正在发生的事情完全没有意义,通常是具有未定义行为的情况。

答案 2 :(得分:1)

int main()
{
    int cstats, choice;
    int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
    cout << "Please choose your specialty: ";
    cout << "[1] Offense [2] Magic [3] Defense [4] Speed";

    cin >> cstats;
    switch(cstats)
    {
        case 1:
            atk = 15;
            def = 5;
            agi = 5;
            break;
        case 2:
                   //other code
            break;
        ....
        default:
          //Here you can prompt to select 1,2,3 or 4
    }
}