c++用户输入未注册

C++ user input not registering

本文关键字:注册 输入 用户 c++      更新时间:2023-10-16

我刚刚开始学习c++,但我很难发现错误。当我编译我的代码时,它似乎无法通过前两个if语句。一旦if语句中的语句出现在编译器屏幕上,程序就会突然停止。我试图弄清楚为什么我不能在std::cin >>部分输入,尽管代码显示编译器上没有错误。如果有人能帮我解决这个问题,我将不胜感激。

#include <iostream>
int main(int argc, const char * argv[]) {
    // insert code here...
    std::string internetPlan;
    float monthlyBill;
    float internetPlanA = 9.95;
    float internetPlanB = 13.95;
    float internetPlanC = 29.99;
    float amountSaved1; //amount saved comparing plan A to plan B
    float amountSaved2; // amount saved comparing plan A to plan C
    float amountSaved3; //amount saved comparing plan B to plan C
    std::string months[12] = {"January", "February",  "March", "Abril", "May", "June", "July", "August", "September", "October", "November", "December"};
    std::string userInput;
    int hoursOfMonth;
    std::cout << "Welcome to the Ardeo Internet Service Providern";
    std::cout << "The following are our internet service plansn";
    std::cout << "Package A: $9.95 per month for 10 hours access. Additional hours are $2.00 per hourn";
    std::cout << "Package B: $13.95 per month for 20 hours access. Additional hours are $1.00 per hourn";
    std::cout << "Package C: $29.99 per month per unlimited accessn";
    std::cout << "Please enter your internet plan. Enter A, B or C";
    std::cin >> internetPlan;
    if (internetPlan!= "A" || internetPlan!="a" || internetPlan != "B" || internetPlan!= "b" || internetPlan != "C" || internetPlan != "c") {
        std::cout << "Please enter a valid plann";
        std::cout << "Enter plan A, B or Cn";
        std::cin >> internetPlan;
    }
    std::cout << "Please enter the hours you usedn";
    std::cin >> hoursOfMonth;
    if (hoursOfMonth < 0 || hoursOfMonth > 744) {
        std::cout << "You cannot have negative hours or more than 744n";
        std::cout << "Please enter the hours againn";
        std::cin >> hoursOfMonth;
        return hoursOfMonth;
    }

    std::cout << "Please enter the month";
    std::cin >> userInput;
    if (userInput == months[0] && hoursOfMonth > 744) {
        std::cout << "Sorry you have too many hours for the month of Januraryn";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[1] && hoursOfMonth > 672){
        std::cout << "Sorry too many hours for Februraryn";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[2] && hoursOfMonth > 744) {
        std::cout << "Sorry too many hours for Marchn";
        std::cout << "Please enter month again";
        std::cin >> userInput;
    } else if (userInput == months[3] && hoursOfMonth > 720) {
        std::cout << "Sorry too many hours for Abriln";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[4] && hoursOfMonth > 744) {
        std::cout << "Sorry too many hours for Mayn";
        std::cout << "Please enter month again";
        std::cin >> userInput;
    } else if ( userInput == months[5] && hoursOfMonth > 720) {
        std::cout << "Sorry too many hours for Junen";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[6] && hoursOfMonth > 744){
        std::cout << "Sorry too many hours for Julyn";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[7] && hoursOfMonth > 744){
        std::cout << "Sorry too many hours for Augustn";
        std::cout << "Please enter month again";
        std::cin >> userInput;
    } else if (userInput == months [8] && hoursOfMonth > 720){
        std::cout << "Sorry too many hours for Septembern";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[9] && hoursOfMonth > 744){
        std::cout << "Sorry too many hours for Octobern";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[10] && hoursOfMonth > 720) {
        std::cout << "Sorry too many hours for Novembern";
        std::cout << "Please enter month again";
        std::cin>> userInput;
    } else if (userInput == months[11] && hoursOfMonth > 744){
        std::cout << "Sorry too many hours for Decembern";
        std::cout << "Please enter month again";
        std::cin >> userInput;
    }
    // used to determine how much money would be saved
    if (internetPlan == "A" || internetPlan == "a")
    {
        if (hoursOfMonth <= 10) {
        } else  {
            monthlyBill = internetPlanA + ((hoursOfMonth-10)*2);
            std::cout << "Your bill will be $" << monthlyBill << "n";
            amountSaved1 = monthlyBill - ((internetPlanB+1*(hoursOfMonth -10)));
            std::cout << "You would save $"<<amountSaved1<< " with internet plan Bn";
            amountSaved2 = monthlyBill - internetPlanC;
            std::cout << "You would save $" <<amountSaved2<< " with internet plan Cn";
        }
    } else if (internetPlan == "B" || internetPlan == "b") {
        if (hoursOfMonth <= 20) {
            monthlyBill = internetPlanB;
            std::cout << "Your monthly bill will be $"<< monthlyBill << "n";
        } else {
            monthlyBill = internetPlanB + ((hoursOfMonth - 20)*1);
            amountSaved3 = monthlyBill - internetPlanC;
            std::cout << "Your monthly bill will be $"<<monthlyBill << "n";
            std::cout << "You can save $"<<amountSaved3 << " if you switch to internet plan Cn";
        }
    }
    return 0;
}

您对保护无效用户数据有了很好的了解。但是你的代码有点错。使用if子句不会递归代码段。您希望的内容应该类似于:

while (internetPlan!= "A" && internetPlan!="a" && internetPlan != "B" && internetPlan!= "b" && internetPlan != "C" && internetPlan != "c") {
    std::cout << "Please enter a valid plann";
    std::cout << "Enter plan A, B or Cn";
    std::cin >> internetPlan;
}

while (hoursOfMonth < 0 || hoursOfMonth > 744) {
    std::cout << "You cannot have negative hours or more than 744n";
    std::cout << "Please enter the hours againn";
    std::cin >> hoursOfMonth;
}

程序退出的问题应该是第二段return语句的结果。Return用于结束过程(带值),因此int main()结束,程序终止。