我还是初学者,所以如果经常提出这些问题我会道歉。我做了几次搜索,但我找不到合适的答案。以下是我的两个主要问题:
我正在构建一个简单的计数程序,允许用户按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;
}
我已经让程序在大多数情况下正常运行,但是有更好的&#34;或更干净的语法用于if / else条件?我觉得
if ((yesNo == 'y') || (yesNo == 'Y'))
有不必要的冗余,可能更清洁。
此外,如果用户输入&#39; n&#39;或者&#39; N&#39;如何从一开始就返回主函数并启动程序?
答案 0 :(得分:2)
1)从编译代码的角度来看,进行这两种比较都很好,并且清楚地调出每个比较是非常可读的
2)你想要的是一个break;
表达式来摆脱你的while循环
答案 1 :(得分:0)
在这种情况下,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);
}
只有break
离开循环,因此return
s 0
或return
(可能是其他)值,因为您在函数中
答案 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
}