在java中使用低、高、正确选项猜测数字

在java中使用低、高、正确选项猜测数字,java,loops,range,Java,Loops,Range,我正试图用java编写一个具有以下输出的java代码 正如你们所看到的,它总是把范围缩小一半。我花了几个小时试图找出答案,但没有结果。如果你们能给我一个提示,我将不胜感激。下面是我编写代码的失败尝试 import java.util.Scanner; public class GuessNumber { public static void main(String[]args) { int num1 = 0,num2 = 100,guesses = 0;

我正试图用java编写一个具有以下输出的java代码

正如你们所看到的,它总是把范围缩小一半。我花了几个小时试图找出答案,但没有结果。如果你们能给我一个提示,我将不胜感激。下面是我编写代码的失败尝试

import java.util.Scanner;
public class GuessNumber
{
   public static void main(String[]args)
   {
          int num1 = 0,num2 = 100,guesses = 0;
          String answer;
          boolean correct = false;

          Scanner keyboard = new Scanner(System.in);

          do{
              System.out.print("Is the number " + <?> + "? ");       //have no idea
              answer = keyboard.next();

              if(answer.equalsIgnoreCase("C")) {
                    correct = true;
                    guessses++;
               }  
              else if(answer.equalsIgnoreCase("H")){
                    ? = (num1 + num2) / 2;                   //lost here 
                    guesses++;
               } 
              else if(answer.equalsIgnoreCase("L")){
                    ? = (num1 + num2) / 2;                   //lost here
                    guesses++;
               }
           }while(correct == false);

    System.out.print("It took me " + guesses + " guesses!");   
 }
import java.util.Scanner;
公共类猜测数
{
公共静态void main(字符串[]args)
{
int num1=0,num2=100,猜测=0;
字符串回答;
布尔正确=错误;
扫描仪键盘=新扫描仪(System.in);
做{
System.out.print(“是数字“++”?”;//不知道
答案=键盘。下一步();
如果(回答:等信号情况(“C”)){
正确=正确;
猜测++;
}  
否则,如果(回答。等信号情况(“H”)){
?=(num1+num2)/2;//此处丢失
猜测++;
} 
else if(回答。等效信号情况(“L”)){
?=(num1+num2)/2;//此处丢失
猜测++;
}
}while(correct==false);
System.out.print(“它花了我+猜测+猜测!”);
}

}

试试这个,它的作用是,虽然答案不正确,但它将取num1(猜测的最小值)和num2(猜测的最大值)并找到它们的平均值。如果数字高于最新猜测,我们将下限设置为最新猜测;如果数字较低,我们将上限设置为最新猜测

import java.util.Scanner;

public class GuessNumber{

public static void main(String[]args)
{
          int num1 = 0,num2 = 101,guesses = 0, guess=0;
          String answer;
          boolean correct = false;

          Scanner keyboard = new Scanner(System.in);
          do{
              guess=(num1+num2) /2 > 0? (num1+num2) /2:1;

              System.out.print("Is the number " + guess + "? ");       
              answer = keyboard.next();

              if(answer.equalsIgnoreCase("C")) {
                    correct = true;
                    guesses++;
               }  
              else if(answer.equalsIgnoreCase("H")){
                    num1 = guess;              
                    guesses++;
               } 
              else if(answer.equalsIgnoreCase("L")){
                    num2 = guess;                  
                    guesses++;
               }

           }while(correct == false);    
           System.out.print("It took me " + guesses + " guesses!");   
 }

}

顺便说一句,猜测范围在1-100之间,让一个变量
int currentGuess
保持计算机当前的猜测怎么样?然后在代码中编写的
处重新分配它的值…我想对于start,您不希望在每个循环中都输入答案。非常感谢。我非常接近,但从未到达。谢谢Kevin。您为我节省了数小时。
public static void main(String[]args)
{
          Random randomNumber = new Random();
          int num1 = 0,num2 = 100,guesses = 0, guess=0;
          String answer;
          boolean correct = false;

          Scanner keyboard = new Scanner(System.in);

          do{
              guess=randomNumber.nextInt(num2-num1) + num1; 

              System.out.print("Is the number " + guess + "? ");       
              answer = keyboard.next();

              if(answer.equalsIgnoreCase("C")) {
                    correct = true;
                    guessses++;
               }  
              else if(answer.equalsIgnoreCase("H")){
                    num1 = guess;              
                    guesses++;
               } 
              else if(answer.equalsIgnoreCase("L")){
                    num2 = guess;                  
                    guesses++;
               }
           }while(correct == false);    
           System.out.print("It took me " + guesses + " guesses!");   
 }
import java.util.Scanner;

public class GuessNumber{

public static void main(String[]args)
{
          int num1 = 0,num2 = 101,guesses = 0, guess=0;
          String answer;
          boolean correct = false;

          Scanner keyboard = new Scanner(System.in);
          do{
              guess=(num1+num2) /2 > 0? (num1+num2) /2:1;

              System.out.print("Is the number " + guess + "? ");       
              answer = keyboard.next();

              if(answer.equalsIgnoreCase("C")) {
                    correct = true;
                    guesses++;
               }  
              else if(answer.equalsIgnoreCase("H")){
                    num1 = guess;              
                    guesses++;
               } 
              else if(answer.equalsIgnoreCase("L")){
                    num2 = guess;                  
                    guesses++;
               }

           }while(correct == false);    
           System.out.print("It took me " + guesses + " guesses!");   
 }

}