Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Search_While Loop_Binary Search - Fatal编程技术网

Java 猜数字游戏不断重复相同的问题和错误的猜测

Java 猜数字游戏不断重复相同的问题和错误的猜测,java,loops,search,while-loop,binary-search,Java,Loops,Search,While Loop,Binary Search,如果你运行游戏,你可以看到某些数字游戏无法正确猜测。例如,如果你的数字是13,游戏将循环两倍多,并将猜测你的数字为12而不是13。我认为这是计数的一个问题,但我已经多次尝试跟踪循环,但找不到错误。我认为问题主要在于我的while循环 //import statements import java.util.Scanner; public class Numbers { public static void binarySearch() { int position=0;

如果你运行游戏,你可以看到某些数字游戏无法正确猜测。例如,如果你的数字是13,游戏将循环两倍多,并将猜测你的数字为12而不是13。我认为这是计数的一个问题,但我已经多次尝试跟踪循环,但找不到错误。我认为问题主要在于我的while循环

//import statements
import java.util.Scanner;

public class Numbers
{

   public static void binarySearch()
   {
    int position=0;
    String answer;
    int upper_BOUND=100;
    int lower_BOUND=0;
    Scanner input=new Scanner(System.in);


     while( (lower_BOUND <= upper_BOUND))
     {
        position = (lower_BOUND + upper_BOUND) / 2;
        System.out.println("Is your value greater than " + position + "?");
        answer=input.next();
        if((upper_BOUND-lower_BOUND<=1))
        {
            break;
        }
         if (answer.equals("no"))             // If the number is > key, ..
         {                                              // decrease position by one.
              upper_BOUND = position --;
         }
         if(answer.equals("yes"))
         {
              lower_BOUND = position ++;    // Else, increase position by one.
         }



     }


           System.out.println("Is your number " + position + "?");
           String answer2=input.next();
           System.out.println(position+" is the answer.\n Thank you for playing the guessing game.");

     //else
         // System.out.println("Bruh pick a number from 1 to 100 ");
  }

}
//导入语句
导入java.util.Scanner;
公共课号
{
公共静态void二进制搜索()
{
int位置=0;
字符串回答;
int上界=100;
int下限=0;
扫描仪输入=新扫描仪(System.in);

而((lower_-BOUND您的问题应该与“lower_-BOUND=position++;”中的增量有关,这里发生的是当您增加position值时,“++”首先递增,然后将值分配给position变量。lowerbound实际上并没有分配position的递增值,而是分配给position的旧值。因此,请更改为“lower_BOUND=++position;”

如下

 if(answer.equals("yes"))
         {
              lower_BOUND =  ++ position ;    // Else, increase position by one.
         }

我的建议是检查你的“如果((上限-下限)问题是什么?你在NumberGuesser类中创建了数组,但是你没有在任何地方使用:D那么你在哪里搜索??
 if(answer.equals("yes"))
         {
              lower_BOUND =  ++ position ;    // Else, increase position by one.
         }