Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将范围保持在某一组数字内_Java - Fatal编程技术网

Java 将范围保持在某一组数字内

Java 将范围保持在某一组数字内,java,Java,对于我的Java类,我正在编写一个小程序,首先选择一个介于1和100之间的int数字。然后,它会提示用户开始猜测正确的int。如果用户对int的猜测过高或过低,程序将打印出一个新范围,供他们在该范围内进行猜测。如果用户输入字符串或双精度,程序只需重新要求用户输入整数,但不会以任何方式更改范围 示例输出(当机密号为20时)如下所示: c:\csc116> java GuessingGame Guess the secret number! Enter a number between 1 and

对于我的Java类,我正在编写一个小程序,首先选择一个介于1和100之间的
int
数字。然后,它会提示用户开始猜测正确的
int
。如果用户对
int
的猜测过高或过低,程序将打印出一个新范围,供他们在该范围内进行猜测。如果用户输入
字符串
双精度
,程序只需重新要求用户输入
整数
,但不会以任何方式更改范围

示例输出(当机密号为20时)如下所示:

c:\csc116> java GuessingGame Guess the secret number! Enter a number between 1 and 100 (inclusive): 45 Enter a number between 1 and 44 (inclusive): jlkj Enter a number between 1 and 44 (inclusive): 31.0 //double Enter a number between 1 and 44 (inclusive): 1000 //outside the range of 1-100 Enter a number between 1 and 44 (inclusive): 34 Enter a number between 1 and 33 (inclusive): 15 Enter a number between 16 and 33 (inclusive): 20 You win!
当您还想提示用户初始最小值和最大值时,应将这两个值分开保存,并在循环开始时插入另一个
(如果
)-检查

guess = console.nextInt();
if (guess > originalMaximum) {
    System.out.print("Enter a number less then " + originalMaximum);
}

当您还想提示用户初始最小值和最大值时,应将这两个值分开保存,并在循环开始时插入另一个
(如果
)-检查

guess = console.nextInt();
if (guess > originalMaximum) {
    System.out.print("Enter a number less then " + originalMaximum);
}

您只检查相对于机密号码的猜测号码。您缺少的是相对于最大值和最小值的猜测数的检查。例如:

if (guess > maximum) {
    System.out.print("Too high!");
} else if (guess < minimum) {
    System.out.print("Too low!");
}
if(猜测>最大值){
System.out.print(“太高了!”);
}否则如果(猜测<最小值){
系统输出打印(“太低!”);
}

您只是在检查相对于密码的猜测数字。您缺少的是相对于最大值和最小值的猜测数的检查。例如:

if (guess > maximum) {
    System.out.print("Too high!");
} else if (guess < minimum) {
    System.out.print("Too low!");
}
if(猜测>最大值){
System.out.print(“太高了!”);
}否则如果(猜测<最小值){
系统输出打印(“太低!”);
}
您有:

            guess = console.nextInt();
            if (guess > secretNumber) {
                maximum = guess - 1;
                System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
            }
            if (guess < secretNumber) {
                minimum =guess + 1;
                System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
            }
            if (guess == secretNumber) {
                System.out.println("You win!");
            }
或:

guess=console.nextInt();
如果(猜测<最小允许值| |猜测>最大允许值){
//处理错误
}如果(猜测>秘密数字){
// ...
}else if(猜测<秘密数字){
// ...
}else if(guess==secretNumber){
// ...
}
或者,坚持您当前的风格,只要您不必在循环中执行任何不相关的逻辑(在您的程序中似乎就是这样):

guess=console.nextInt();
如果(猜测<最小允许值| |猜测>最大允许值){
//处理错误
继续;
}
//处理有效输入
如果(猜测>秘密数字){
// ...
}
如果(猜测
您有:

            guess = console.nextInt();
            if (guess > secretNumber) {
                maximum = guess - 1;
                System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
            }
            if (guess < secretNumber) {
                minimum =guess + 1;
                System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
            }
            if (guess == secretNumber) {
                System.out.println("You win!");
            }
或:

guess=console.nextInt();
如果(猜测<最小允许值| |猜测>最大允许值){
//处理错误
}如果(猜测>秘密数字){
// ...
}else if(猜测<秘密数字){
// ...
}else if(guess==secretNumber){
// ...
}
或者,坚持您当前的风格,只要您不必在循环中执行任何不相关的逻辑(在您的程序中似乎就是这样):

guess=console.nextInt();
如果(猜测<最小允许值| |猜测>最大允许值){
//处理错误
继续;
}
//处理有效输入
如果(猜测>秘密数字){
// ...
}
如果(猜测
在检查猜测的数字是否小于或大于机密数字之前,请将此检查放在以下位置之前:

if (guess < minimum || guess > maximum) 
{
    System.out.print("Please enter a number between " + minimum + " and " + maximum);
    continue;
}

if (guess > secretNumber) 
{
   maximum = guess - 1;
   System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if(猜测<最小值| |猜测>最大值)
{
系统输出打印(“请输入一个介于“+最小值+”和“+最大值”之间的数字);
继续;
}
如果(猜测>秘密数字)
{
最大值=猜测-1;
系统输出打印(“输入一个介于“+最小值+”和“+最大值+”(含):)之间的数字;
}

在检查猜测的数字是否小于或大于机密数字之前,请将此检查放在以下位置之前:

if (guess < minimum || guess > maximum) 
{
    System.out.print("Please enter a number between " + minimum + " and " + maximum);
    continue;
}

if (guess > secretNumber) 
{
   maximum = guess - 1;
   System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if(猜测<最小值| |猜测>最大值)
{
系统输出打印(“请输入一个介于“+最小值+”和“+最大值”之间的数字);
继续;
}
如果(猜测>秘密数字)
{
最大值=猜测-1;
系统输出打印(“输入一个介于“+最小值+”和“+最大值+”(含):)之间的数字;
}

您所说的“打印信息不变”是什么意思?在输入超出范围的号码之前和之后,它都会打印“输入一个介于1和44之间的号码(包括):”。这在我看来是一样的。这意味着,如果最初打印输出是“输入一个介于1和100之间的数字”,并且用户首先键入4,那么下一次打印输出将是“输入一个介于5和100之间的数字”。但如果用户随后输入1000,而不是1到100之间的整数,下一次打印输出仍将显示“输入5到100之间的数字”,而不是“输入5到999之间的数字”。希望这能让你更清楚…我有时难以解释自己。哦,对不起,我把你的样本输出误认为是你的实际输出。这是因为逻辑不正确。如果用户输入的不是1。。100,它被“其他人”抓住了。您需要检查输入是否有效。顺便说一句,如果这是家庭作业,请将其标记为家庭作业。谢谢@库哈斯基:我不认为把帖子当作家庭作业有什么意义。只要这是一个明确的问题,表明至少有一些尝试,它的作业是否无关紧要。你所说的“打印出来的信息不会改变”是什么意思?在输入超出范围的号码之前和之后,它都会打印“输入一个介于1和44之间的号码(包括):”。在我看来是一样的。这意味着如果最初打印输出是“输入一个介于1和100之间的数字”,则使用