当前位置: 首页 > 知识库问答 >
问题:

如何在同一个while循环中计算number大于和小于?

鲁浩言
2023-03-14
// DiceRollProject.cpp : Defines the entry point for the console     application.
//

#include "stdafx.h"
#include <iostream>
#include <time.h>

using namespace std;

int diceRoll(int max);  // function definition
int getValidInteger();// function definition

int main() {

    srand(time(0)); // seed the random number generator

    int exitProgram = 0;
    int guess, rollValue;
    int maxRollValue = 6;
    cout << "Hello! Let's play a dice game. Let me do the first roll for you.\n" << endl;
    rollValue = diceRoll(maxRollValue);
    cout << "In this roll, you got: " << rollValue << "\n" << endl;

    do {
        rollValue = diceRoll(maxRollValue);


        cout << "What's your guess for the next roll? Enter an integer between 1 and " << maxRollValue << ": ";
        guess = getValidInteger();
        // TODO: Validate input

        if (guess > rollValue)
        {
            cout << "The guess was too high!";

        }

        if (guess < rollValue)
        {
            cout << "The guess was too low!";

        }

        if (guess == rollValue)
        {
            cout << "You guessed correctly, congrats!";

        }

        cout << "In this roll, you got: " << rollValue << "\n" << endl;
        // TODO: Evaluate result


        cout << "Enter 1 to exit or any other integer to continue rolling ";
        exitProgram = getValidInteger();
        cout << "\n";
        if (exitProgram == 1)
        {
            cout << "Sorry to see you go. Have a wonderful day!\n" << endl;
        }

    } while (exitProgram != 1);

    return 0;
}

// Roll the die
int diceRoll(int max) {
    int rollValue;

    rollValue = (rand() % max) + 1;

    return rollValue;
}


// Check if user entered an integer
int getValidInteger() {
    int userInput;

    cin >> userInput;

    while (userInput < 1)  {

        if (userInput < 1)
        {
            cout << "Please enter a number greater than or equal to 1\n";
        }

        if (userInput > 6)
        {
            cout << "Please enter a number less than or equal to 6\n";
        }

    }


    if (cin.fail()) {
        cin.clear();
        cin.ignore();
        cout << "Please enter an Integer only ";
        cin >> userInput;
        cout << "\n";
    }

    return userInput;
}

我有一个掷骰子猜谜游戏,我试图评估用户的输入,以确保他们不能输入小于1和大于6的数字,不幸的是,只有我的if语句,他们仍然可以输入这些数字,尽管显示一个字符串输入无效,我想做一个while循环,不断要求他们输入等于或大于1的有效数字和等于且小于 6,如果用户不断输入不正确的数字,while 循环将继续要求他们输入有效数字,直到他们输入一个,然后该数字将正常运行程序。

共有3个答案

翟英达
2023-03-14

据我所知,你正在寻找这样的东西:

int main (){
int my_magic_number=(rand()%6)+1,usernumber=-1;
bool state;
while (usernumber!=my_magic_number){
     cin>>usernumber;
     state = (usernumber<1||usernumber>6);
     while (state) {
        cout<<"You entered a number outside the range [1,6] please try again\n";}
        cin>>usernumber;
        state = (usernumber<1||usernumber>6);
     }
    if (usernumber!=my_magic_number) {/* do whatever you want */}
} //while loop
} // main 
阎辰钊
2023-03-14

所以你的条件是,如果这个人猜得太高或太低,你就能留在while循环中。在while循环中,我将添加您想要重复的更新条件或语句。因此,在你的情况下,“你的猜测太高了”或“你的猜测太低了”,并再次要求他们的投入。我不是专业人士,但我会简单地构造两个while循环,一个用于过高,一个用于过低,就像你的if语句一样。实际上,您可以将前两个if语句改为while循环,并添加几行cout,让人们再次猜测并验证他们的输入。我希望这有所帮助。

西门安宁
2023-03-14

首先,在while循环中有死代码

while (userInput < 1)  {

    if (userInput < 1)
    {
        cout << "Please enter a number greater than or equal to 1\n";
    }

    if (userInput > 6)
    {
        cout << "Please enter a number less than or equal to 6\n";
    }

}

在循环体中,第一个if总是true,第二个if总是false。当用户写入无效输入时,应在循环中输入。当(userInput

在评估while的条件之后,您应该要求用户编写输入

do  {
    cout << "Please enter an Integer only ";
    cin >> userInput;
    if (userInput < 1)
    {
        cout << "Please enter a number greater than or equal to 1\n";
    }

    if (userInput > 6)
    {
        cout << "Please enter a number less than or equal to 6\n";
    }

}while(userInput < 1 || userInput > 6);
 类似资料:
  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。

  • 被一个简单的问题卡住了,变量a,在10和100之间,减到10则++,加到100则--,一直循环,最好只用一次setInterval如何做,只用变量a,不借助第二个变量,用if else和switch

  • 问题在代码的注释中,很抱歉,我认为它更整洁,因为流程很重要,我想。。。 //*这是来自Oracle:(https://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html#hasNextInt()) ”hasNextInt 公共布尔值hasnetint() 如果此扫描仪输入中的下一个标记可以使用nextInt()方法解释为默认基数中的in

  • 最近,我一直在处理一些紧凑的代码,我试图得到一个非常奇怪的尽可能小的循环。 我知道我可以让循环工作,比如一个if/ther语句,但是我正在寻找一种更小的方法来做到这一点,因为这使得代码大了两倍(更长的“循环”)。 那么是的,有什么办法可以做到这一点吗?还是我一直在用一个不同的角色做两个不同的循环?提前谢谢

  • 问题内容: 所以我想让我的程序读取一个输入,该输入在一行中有一些整数,例如: 1 1 2 然后,它应该分别读取每个整数并在新行中打印。程序必须读取的整数数量没有预先给出,所以我想做的是使用while循环,该循环在没有更多的整数可读取之后结束。这是我写的代码: 但是它不能正常工作,因为循环永远不会结束,它只希望用户输入更多的整数。我在这里想念什么? 问题答案: 扫描程序基本上会等到文件结束进入。如果

  • 例如 这种情况何时为真/假,为什么使用它们而不是其他情况?