簡體   English   中英

為什么我的嵌套 If 語句沒有生成 cout?

[英]Why my nested If statement is not generating cout?

我的代碼有兩個問題。 第一個是當代碼第二次執行時,依此類推,它跳過第一個 cin 命令,但它確實生成了第一個 cout。 我的第二個問題是,如果我為較低的 if 語句輸入一個值 true,我不會生成 cout。 除了做兩件事外,其他一切都正常工作

#include "pch.h"
#include <iostream>
#include <string>
#include <random>
#include <ctime>>

using namespace std;
int main()
{
    mt19937 generator;
    generator.seed(time(0));
    uniform_int_distribution<uint32_t>dice(1000, 9999);

    int ownderID=dice(generator);
    string ownerName;
    string dogName;
    string dogBreed;
    float dogAge;
    float dogWgt;
    int exits;
    int weekCost = 0;
    int dogAmount = 0;
    int dailyPrice = 0;

    do
    {
        cout << "Owner Name: ";
        getline(cin, ownerName);
        cout << endl;

        cout << "Dog Name: ";
        getline(cin, dogName);
        cout << endl;

        cout << "Dog Breed: ";
        getline(cin, dogBreed);
        cout << endl;

        cout << "Dog Age: ";
        cin >> dogAge;
        cout << endl;

        cout << "Dog Weight in lb: ";
        cin >> dogWgt;
        cout << endl;

        cout << "Daily Bill" << endl;
        cout << "Owner Name: " << ownerName << " ID" << "[" << ownderID << "]" << endl;
        cout << "Dog Name: " << dogName << endl;
        cout << "Dog Age: " << dogAge << endl;
        cout << "Dog Breed: " << dogBreed << endl;

        if (0<dogWgt && dogWgt <= 15)
        {
            dailyPrice = 55;
            weekCost += 55;
            if (15 < dogWgt && dogWgt <= 30)
            {
                dailyPrice = 75;
                weekCost += 75;
                if (30 < dogWgt && dogWgt <= 80)
                {
                    dailyPrice = 105;
                    weekCost += 105;
                    if (dogWgt > 80)
                    {
                        dailyPrice = 125;
                        cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
                        weekCost += 125;
                    }
                }
            }
        }

        cout << "To terminate enter -1; To add another dog information enter 1: ";
        cin >> exits;
        cout << endl;

        dogAmount += 1;

    } while (exits != -1);
    cout << "Total week cost: " << weekCost << endl;
    cout << "Total number of daycare entries: " << dogAmount << " dogs" << endl;
    system("PAUSE");
}

在 do-while 循環的最后插入以下調用以從輸入流中刪除在此語句之后留在那里的換行符

cin >> exits;

那是

#include <limits>

//...

    cin >> exits;
    cout << endl;
    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );

    dogAmount += 1;

} while (exits != -1);

替換這些嵌套的 if 語句

    if (0<dogWgt && dogWgt <= 15)
    {
        dailyPrice = 55;
        weekCost += 55;
        if (15 < dogWgt && dogWgt <= 30)
        {
            dailyPrice = 75;
            weekCost += 75;
            if (30 < dogWgt && dogWgt <= 80)
            {
                dailyPrice = 105;
                weekCost += 105;
                if (dogWgt > 80)
                {
                    dailyPrice = 125;
                    cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
                    weekCost += 125;
                }
            }
        }
    }

對於 if-else 語句,例如

    if (0<dogWgt && dogWgt <= 15)
    {
        dailyPrice = 55;
        weekCost += 55;
    }
    else if (15 < dogWgt && dogWgt <= 30)
    {
        dailyPrice = 75;
        weekCost += 75;
    }
    else if (30 < dogWgt && dogWgt <= 80)
    {
        dailyPrice = 105;
        weekCost += 105;
    }
    else // (dogWgt > 80)
    {
        dailyPrice = 125;
        cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
        weekCost += 125;
    }

或者你的意思是最后一個 else 語句應該是

    else // (dogWgt > 80)
    {
        dailyPrice = 125;
        weekCost += 125;
    }

之后這個聲明如下

    cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM