首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法退出while循环,只需继续

无法退出while循环,只需继续
EN

Stack Overflow用户
提问于 2022-09-18 06:09:42
回答 1查看 74关注 0票数 -1

我得到了这段代码,问题是我只能永远继续循环,但我不能退出它。我和这件事斗争了好几个小时,找出了我做错了什么。我认为它最终主要是关于do while的,但是由于我是新手,所以代码中可能还有别的地方。

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main() {
    locale swedish("swedish"); 
    locale::global(swedish);

    int saldo = 1000;
    int bet;
    int vinst;
    char val;
    int nummer = 0;
    char spelaigen;
    char spelainteigen;
    
    /*Här "presenteras" programmet med lite cout's som mest välkomnar dig till roulett och ger dig ett saldo*/

    cout << "Username: Användare" << endl;
    cout << "Password: ********" << endl;
    cout << "Logging in: " << endl;
    cout << "Searching for a live room: " << endl;
    cout << "Initializing mainframe: \n" << endl;
    cout << "Välkommen till Save7heCasino" << endl;
    cout << "Här spelar du Roulette " << endl;
    cout << "Du har " << saldo << " att spela för." << endl;
    while (true)
    {
        cout << "Du får välja mellan 100, 300 eller 500 att spela för." << endl;
        cin >> bet;
        if (saldo < bet)
        {
            cout << "Ditt saldo är för lågt." << endl;
            break;
        }
        if (bet == 100)
        {
            cout << "Du valde insatsen 100:-" << endl;
            cout << "Ditt saldo är " << saldo - bet << endl;
        }
        else if (bet == 300)
        {
            cout << "Du valde insatsen 300:-" << endl;
            cout << "Ditt saldo är " << saldo - bet << endl;
        }
        else if (bet == 500)
        {
            cout << "Du valde insatsen 500:-" << endl;
            cout << "Ditt saldo är " << saldo - bet << endl;
        }
        else
        {
            cout << "Getfucl :)" << endl;
            break;
        }

        srand(time(0));
        int vinst = rand() % 36 + 1;
        cout << "\n";
        cout << "-Vinsttabell: " << endl;
        cout << "-Vinst: Färg ger 2x din insats." << endl;
        cout << "-Vinst: Nummer ger 10x din insats." << endl;
        cout << "\n";
        cout << "Vill spela på färg [1] eller nummer [2]: " << endl;
        cin >> val;
        /*Här väljer jag 1 eller 2 och deklarerar "val" till det nummret
        Om jag väljer 1 så kommer if-satsen under att köras och väljer jag 2 så kommer else if-satsen att köras
        Om jag väljer 1 så kommer den att deklarera om "val" för den nya input som blir, i detta fall "r" eller "b"
        och fortsätta att köras i en ny if-sats som hanterar inmatning 1 */

        /*Här kör jag en if-sats för svaret 1 som är färg, identifieraren "val" deklareras då ett nytt värde som
        matas in utav användaren som nu i sin tur får välja "r" eller "b". Det finns 2 if-satser för val 1, en för respektive färg, "r" och "b" som avgörs omÄ
        random funktionen är delbar eller inte vilket talar om utifall svaret blev rött eller svart.*/
        if (val == '1')
        {
            cout << "Vilken färg vill du spela? [r] för Röd och [b] för Svart " << endl;

            cin >> val;

            if (val == 'b')
            {
                if (vinst % 2 == 0)
                {
                    cout << "Resultatet blev Svart: " << vinst << endl;
                    saldo = saldo + bet * 2 - bet;
                    cout << "Du vann: " << bet + bet << endl;
                    cout << "Ditt nya saldo är: " << saldo << endl;

                }
                else
                {
                    cout << "Du förlorade resultatet blev Rött: " << vinst << endl;
                    saldo = saldo - bet;
                    cout << "Ditt nya saldo är: " << saldo << endl;
                }
            }
            if (val == 'r')
            {
                if (vinst % 2 != 0)
                {
                    cout << "Resultatet blev Rött: " << vinst << endl;
                    saldo = saldo + bet * 2 - bet;
                    cout << "Du vann: " << bet + bet << endl;
                    cout << "Ditt nya saldo är: " << saldo << endl;
                }
                else
                {
                    cout << "Du förlorade resultatet blev Svart: " << vinst << endl;
                    cout << "Du förlorade: " << endl;
                    saldo = saldo - bet;
                    cout << "Ditt nya saldo är: " << saldo << endl;
                }

            }

        }

        /*Här hamnar du om du valde "2" i det första steget efter du valt insats. Även i denna if-sats finns det 2 andra if-satser ,*/

        if (val == '2')
        {
            cout << "Vilket nummer?: ";

            cin >> val;

            if (vinst == val)
            {
                cout << "Grattis du vann: " << vinst << endl;
                cout << "Du vann: " << bet * 10 << endl;
                saldo = saldo + bet * 10 - bet;
                cout << "Ditt nya saldo är " << saldo << endl;
            }
            else if (vinst!=val)
            {
                saldo = saldo - bet;
                cout << "Fel nummer, det rätta nummret var: " << vinst << " - Ditt nya saldo är: " << saldo << endl;
            }
        }

        do
        {
            cout << "Vill du spela igen?: j/n?: " << endl;
            cin >> spelaigen;
        } while (spelaigen == 'j' || spelaigen == 'J');
    }
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-18 06:56:59

这段代码在我看来是不对的(但抱歉我不懂瑞典语)

代码语言:javascript
复制
    do
    {
        cout << "Vill du spela igen?: j/n?: " << endl;
        cin >> spelaigen;
    } while (spelaigen == 'j' || spelaigen == 'J');

我认为您正在做的是询问用户是否想再次尝试,是还是否?如果这是正确的,那么您所需要的就是一个If语句,如果答案是no,它就会从主循环中分离出来。

代码语言:javascript
复制
    cout << "Vill du spela igen?: j/n?: " << endl;
    cin >> spelaigen;
    if (spelaigen == 'n' || spelaigen == 'N')
        break;

现在,代码可以工作了,但是您也可以检查答案是“是”还是“否”,然后再次询问是否两者都不是。这确实需要一个额外的循环,也许这就是您在代码中要做的。正确的代码如下所示

代码语言:javascript
复制
    do
    {
        cout << "Vill du spela igen?: j/n?: " << endl;
        cin >> spelaigen;
    }
    while (spelaigen != 'j' && spelaigen != 'J' && spelaigen != 'n' && spelaigen != 'N');
    if (spelaigen == 'n' || spelaigen == 'N')
        break;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73760488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档