【发布时间】:2020-10-13 04:01:51
【问题描述】:
我是 C++ 新手,所以我很抱歉我缺乏知识。 无论如何,我正在尝试在完成一个案例后返回菜单。
当前正在使用 do-while 等待 bool "restart" 更改为 false。
do {
switch (wahl) {
case 1:
std::cout << "Bitte geben Sie den Grundwert ein: ";
std::cin.clear();
std::cin >> grund_eingabe;
std::cout << "\nBitte geben Sie den Prozentsatz (%) ein: ";
std::cin.clear();
std::cin >> przsatz_eingabe;
std::cout << "Der Prozentwert lautet: " + std::to_string(prozentwert_berechnen(grund_eingabe, przsatz_eingabe)) + "\n";
break;
case 2:
std::cout << "Bitte geben Sie den Grundwert (Gesamtanzahl) ein: ";
std::cin.clear();
std::cin >> grund_eingabe;
std::cout << "\nBitte geben Sie den Prozentwert ein: ";
std::cin.clear();
std::cin >> przwert_eingabe;
std::cout << "Der Prozentsatz lautet: " + std::to_string(prozentsatz_berechnen(grund_eingabe, przwert_eingabe)) + "\n";
case 3:
std::cout << "Bitte geben Sie den Prozentsatz (%) ein: ";
std::cin.clear();
std::cin >> przsatz_eingabe;
std::cout << "\nBitte geben Sie den Prozentwert ein: ";
std::cin.clear();
std::cin >> przwert_eingabe;
std::cout << "Der Grundwert lautet: " + std::to_string(grundwert_berechnen(przsatz_eingabe, przwert_eingabe)) + "\n";
case 4:
neustart = false;
return 0;
default:
break;
}
} while (neustart != false);
当用例 1 结束时,它会循环回到第 1 例而不是菜单。 我能得到一些指导吗? 谢谢!
【问题讨论】:
-
如果
wahl没有改变,那么switch(wahl)将始终转到相同的case。 -
循环前变量 wahl 的值是多少?变量 wahl 永远不会改变,至少在循环的开头或结尾有一个 std::cin 变量 wahl 以便切换有意义。
-
在
case 4,我可以清除控制台并再次显示菜单,并要求输入wahl吗?那不应该工作吗 -
你应该在每次循环迭代中询问,否则你可能永远不会退出循环
-
顺便说一句。如果你返回 0,你甚至不需要将 neustart 设置为 true...return 将退出循环以及它所在的函数
标签: c++ loops switch-statement do-while