在c++中使用Enum,没有错误但不会输入

Using Enum in c++, no errors but won't input

我试过为一个任务创建一个代码,让用户输入两个字符,程序将从列表中确定用户的意思。在我的例子中,我的列表是视频游戏机,所以xb 是 xbox,pl 是 playstation,等等。我已经走了很远,使用了我的书中和网上可用的东西,但是此时每当我 运行 我的代码时,它都会编译,运行s,并立即关闭。没有错误,也没有要求用户输入。有什么建议吗?

#include <iostream>
using namespace std;


enum gameconsoles { Xbox, Playstation, PSP, Super_Nintendo, NES, Sega, Gamecube, Nintendo64, Wii, Comodore64, Atari }; // Yes, I know some of this isn't proper.. Should be Atari 2600 and so on, I know my consoles. Just limited to 2 characters made my selection a little more narrow so I had to generalize.
gameconsoles listed;
gameconsoles readgameconsoles()
{
    gameconsoles listed;
    char char1, char2;

    cout << "This program will determine a game console based off of" << endl;
    cout << "the first two characters you input. The list is somewhat small, but" << endl;
    cout << "demonstrates the operation of enumeration programming." << endl << endl;
    cout << "Please input the first two characters of a game console: ";
    cin >> char1 >> char2;
    switch (char1)
    {
    case 'A':
    case 'a':
        listed = Atari;
        break;
    case 'C':
    case 'c':
        listed = Comodore64;
        break;
    case 'G':
    case 'g':
        listed = Gamecube;
        break;
    case'N':
    case'n':
        if (char2 == 'E' || char2 == 'e')
            listed = NES;
        else
            listed = Nintendo64;
        break;
    case 'P':
    case 'p':
        if (char2 == 'L' || char2 == 'l')
            listed = Playstation;
        else
            listed = PSP;
        break;
    case 'S':
    case 's':
        if (char2 == 'E' || char2 == 'e')
            listed = Sega;
        else
            listed = Super_Nintendo;
        break;
    case 'W':
    case 'w':
        listed = Wii;
        break;
    case 'X':
    case 'x':
        listed = Xbox;
        break;
    default:
        cout << "Illegal input. Try again" << endl;
    }
    return listed;
}

void printEnum(gameconsoles listed)
{
    switch (listed)
    {
    case Atari:
        cout << "The console you have specified is Atari";
        break;
    case Comodore64:
        cout << "The console you have specified is the Comodore 64";
        break;
    case Gamecube:
        cout << "The console you have specified is Gamecube";
        break;
    case NES:
        cout << "The console you have specified is the NES" << endl;
        cout << "or also known as the Nintendo Entertainment System";
        break;
    case Nintendo64:
        cout << "The console you have specified is Nintendo 64";
        break;
    case Playstation:
        cout << "The console you have specified is Playstation";
        break;
    case PSP:
        cout << "The console you have specified is PSP" << endl;
        cout << "or better known as the Playstation Portable";
        break;
    case Sega:
        cout << "The console you have specified is Sega";
        break;
    case Super_Nintendo:
        cout << "The console you have specified is Super Nintendo";
        break;
    case Wii:
        cout << "The console you have specified is Wii";
        break;
    case Xbox:
        cout << "The console you have specified is Xbox";
        system("PAUSE");
    }
}

main放在你代码的末尾,然后调用相关的函数:

int main()
{
readgameconsoles();
return 0;
}

你可以这样做:

 #include <iostream>
    using namespace std;

enum gameconsoles
{ 
    Xbox, 
    Playstation, 
    PSP, 
    Super_Nintendo,
    NES, 
    Sega, 
    Gamecube, 
    Nintendo64, 
    Wii, 
    Comodore64,
    Atari 
};

gameconsoles listed;
gameconsoles readgameconsoles(char char1, char char2)
{

    switch (char1)
    {
    case 'A':
    case 'a':
        listed = Atari;
        break;
    case 'C':
    case 'c':
        listed = Comodore64;
        break;
    case 'G':
    case 'g':
        listed = Gamecube;
        break;
    case'N':
    case'n':
        if (char2 == 'E' || char2 == 'e')
            listed = NES;
        else
            listed = Nintendo64;
        break;
    case 'P':
    case 'p':
        if (char2 == 'L' || char2 == 'l')
            listed = Playstation;
        else
            listed = PSP;
        break;
    case 'S':
    case 's':
        if (char2 == 'E' || char2 == 'e')
            listed = Sega;
        else
            listed = Super_Nintendo;
        break;
    case 'W':
    case 'w':
        listed = Wii;
        break;
    case 'X':
    case 'x':
        listed = Xbox;
        break;
    default:
        cout << "Illegal input. Try again" << endl;
    }
    return listed;
}

void printEnum(gameconsoles listed)
{
    switch (listed)
    {
    case Atari:
        cout << "The console you have specified is Atari";
        break;
    case Comodore64:
        cout << "The console you have specified is the Comodore 64";
        break;
    case Gamecube:
        cout << "The console you have specified is Gamecube";
        break;
    case NES:
        cout << "The console you have specified is the NES" << endl;
        cout << "or also known as the Nintendo Entertainment System";
        break;
    case Nintendo64:
        cout << "The console you have specified is Nintendo 64";
        break;
    case Playstation:
        cout << "The console you have specified is Playstation";
        break;
    case PSP:
        cout << "The console you have specified is PSP" << endl;
        cout << "or better known as the Playstation Portable";
        break;
    case Sega:
        cout << "The console you have specified is Sega";
        break;
    case Super_Nintendo:
        cout << "The console you have specified is Super Nintendo";
        break;
    case Wii:
        cout << "The console you have specified is Wii";
        break;
    case Xbox:
        cout << "The console you have specified is Xbox";
        system("PAUSE");
    }
}
void main()
{
    char char1, char2;

    cout << "This program will determine a game console based off of" << endl;
    cout << "the first two characters you input. The list is somewhat small, but" << endl;
    cout << "demonstrates the operation of enumeration programming." << endl << endl;
    cout << "Please input the first two characters of a game console: ";
    cin >> char1 >> char2;
    readgameconsoles(char1, char2);
    printEnum(listed);
    system("pause");
    return;
}

我试过了,对我有用。

这不是enum的问题,而是开发环境或者main函数的问题

你应该

1) 制作并 运行 这个文件:

#include <iostream>
using namespace std;

int main(int argc, char** argv){
    cout << "Please input the first two characters of a game console: ";
    cin >> char1 >> char2;
    cout << "you typed " << char1 << " and " << char2 << endl;

}

2)如果没有看到行 "Please input the first two characters of a game console:",那就很奇怪了。通过描述您的环境来询问它。如果看到一个,请键入两个字符,按回车键,然后转到步骤 (3):

3) 如果你看到 "you typed ... "行,说明没问题,你可以继续研究enum-s。否则转到步骤 (4)

4) 如果没有,