if / else语句中的多个条件?

时间:2015-10-31 20:53:40

标签: c++

我还是初学者,所以如果经常提出这些问题我会道歉。我做了几次搜索,但我找不到合适的答案。以下是我的两个主要问题:

我正在构建一个简单的计数程序,允许用户按1,2,3,等等计算。首先,这里是我的代码功能:

int Count::numOne() {

cout << "You chose to count by 1! Press \"Y\" to continue counting. Press \"N\" to return to the main page." << endl;

while (cin >> yesNo) {
    if ((yesNo == 'y') || (yesNo == 'Y')) {
        ++one;
        cout << one << endl;

    }
    else if ((yesNo == 'n') || (yesNo == 'N')) {
        cout << "User selected no." << endl; //How do I return back to the main function?
}
    else {
        cout << "Please enter either \"Y\" or \"N\"." << endl;
    }

}

return 0;
}
  1. 我已经让程序在大多数情况下正常运行,但是有更好的&#34;或更干净的语法用于if / else条件?我觉得

    if ((yesNo == 'y') || (yesNo == 'Y'))
    

    有不必要的冗余,可能更清洁。

  2. 此外,如果用户输入&#39; n&#39;或者&#39; N&#39;如何从一开始就返回主函数并启动程序?

3 个答案:

答案 0 :(得分:2)

1)从编译代码的角度来看,进行这两种比较都很好,并且清楚地调出每个比较是非常可读的

2)你想要的是一个break;表达式来摆脱你的while循环

答案 1 :(得分:0)

  1. 在这种情况下,operator==调用附近的括号是不必要的,请参阅operator precedence。除非您想要制作自定义比较功能并使用它,否则就是它的全部内容。这个功能可能是这样的:

    #include <cctype>
    
    // will accept both c and option as lowercase or uppercase
    bool isOption(char c, char option)
    {
        return std::tolower(c) == std::tolower(option);
    }
    
  2. 只有break离开循环,因此return s 0return(可能是其他)值,因为您在函数中

答案 2 :(得分:0)

你想要这样的东西:

string yes {"Yy"};

cout << "You chose to count by 1! Press \"Y\" to continue counting. Press \"N\" to return to the main page." << endl;

while (cin >> yesNo) {
    if (yes.find_first_of(yesNo) != string::npos) {
        ++one;
        cout << one << endl;

    }
    // ... other stuff
}