如何退出do-while循环?(C++)

3

在任何人抨击我之前,我查阅了所有的论坛,试图解决这个问题,但不幸的是不能解决它。有人可以指出正确的方向来解决这个问题吗?当我输入值-1时,我想立即退出这个do while循环。例如,当我输入-1时,我希望输出如下:

请输入预计充电时间: // 用户输入-1 正在退出...

#include <iostream>
#include<iomanip>
using namespace std;

int main() {

    float hour;
    float Network1, Network2, Network3;

    do {
        cout << "Enter the expected number of hours charging:" << endl;
        cin >> hour;

    Network1= (1 * hour) + 10;
    Network2= (2.50 * hour);
    Network3 = (0.50 * hour) + 20;

        cout << "Your expected costs are: " << endl;
        cout << "Network 1: $" << fixed << setprecision(2) << Network1 << endl;
        cout << "Network 2: $" << fixed << setprecision(2) << Network2 << endl;
        cout << "Network 3: $" << fixed << setprecision(2) << Network3 << endl;

        if(Network1 < Network2 && Network1 < Network3){
            cout << "The lowest cost network is $" << Network1 << endl;
        }
        else if (Network2 < Network1 && Network2 < Network3){
            cout << "The lowest cost network is $" << Network2 << endl;
        }
        else{
            cout << "The lowest cost network is $" << Network3 << endl;
        }
    }
    while (hour != -1) ;

    cout << "Exiting..." << endl;

    return 0;
    }

1
谷歌搜索“c++ exit while”应该足以给你答案。 - Fade
2个回答

2
有两种方法:
  1. 您可以在读取后立即检查输入
cin >> hour;
if (hour == -1) {
    break;
}
  1. 您可以使用while循环并两次读取值。第一次是在第一次迭代之前,第二次是在最后一次迭代之后。
cout << "Enter the expected number of hours charging:" << endl;
cin >> hour;
while (hour != -1) {
    // ...
    cout << "Enter one more value:" << endl;
    cin >> hour;
}


0

有两种基本的方法来做到这一点,尼安德特人的方式和克罗马冈人的方式。

尼安德特人的方式:

for(;;) { 
   cout << "Enter the expected number of hours charging:" << endl;
   cin >> hour;
   if (!cin || hour == -1) break;
   ...

克罗马冈方式:

while (std::cout << "Enter the expected number of hours charging: \n" &&
            std::cin >> hour &&
            hour! = -1) {
   ...

不涉及正确检查 cin 的方法属于猿人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接