哨兵循环不会运行

Sentinel loop won't run

本文关键字:运行 循环 哨兵      更新时间:2023-10-16

我的程序会编译,但我遇到了几个问题。我的第一个cout语句要求e/E结束,但在我的第二个while循环中,我声明(+ || - || * || /)不会运行。+/-/*//返回"操作类型无效"。你们能帮我看看我的错误吗?

第一个哨点循环,只是学习循环:

#include <iostream>
using namespace std;
int main()
{
    int numOne;
    int numTwo;
    int result;
    string operation;
    cout << "Please enter what operation you'd like to perform or e/E to end program: ";
    cin >> operation;
    while (operation == "e" || "E")
    {
        cout << "Operation type invalid." << endl;
        cout << "Please enter what operation you'd like to perform or e/E to end program: ";
        cin >> operation;
    }
    while (operation == "+" || operation == "-" || operation == "*" || operation == "/")
    {
        cout << "Please enter integer one: " << endl;
        cin >> numOne;
        cout << "Please enter integer two: " << endl;
        cin >> numTwo;
    if (operation == "+")
    {
        result = numOne + numTwo;
        cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
        cout << "The operation you chose was " << operation << "." << endl;
        cout << "The operations result is " << result << "." << endl;
        cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
    }
    else if (operation == "-")
    {
        result = numOne - numTwo;
        cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
        cout << "The operation you chose was " << operation << "." << endl;
        cout << "The operations result is " << result << "." << endl;
        cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
    }
    else if (operation == "*")
    {
        result = numOne * numTwo;
        cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
        cout << "The operation you chose was " << operation << "." << endl;
        cout << "The operations result is " << result << endl;
        cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
    }
    else if (operation == "/")
    {
        if (numTwo == 0)
        {
                cout << "You cannot divide by zero!" << endl;
        }
        else
        {
        result = numOne / numTwo;
        cout << "The numbers you entered were " << numOne << "," << numTwo << endl;
        cout << "The operation you chose was " << operation << "." << endl;
        cout << "The operations result is " << result << endl;
        cout << "Your equation was: " << numOne << " " << operation << " " << numTwo << " = " << result << ".";
        }
    }
    }
    return 0;
}
while (operation == "e" || "E")

在这里,您正在比较两种条件之一:

  1. operation=="e"
  2. 如果不是,"E"是否为有效指针

第二个条件就是你的问题:"E"当然是一个有效的指针,所以这个条件总是true。总是请注意,在第二个条件中,您没有比较operation"E"

你永远被困在这里:

while (operation == "e" || "E")
{
    cout << "Operation type invalid." << endl;
    cout << "Please enter what operation you'd like to perform or e/E to end program: ";
    cin >> operation;
}

你只需要有:

while (operation == "e" || operation == "E")

这可能只是一个拼写错误或疏忽,而不是其他任何事情。