计算机猜测用户输入范围内的数字

Computer guessing number between user-inputted range

我正在尝试使用 Java 创建一个游戏,其中用户输入两个数字来设置范围,并且计算机必须猜测用户的数字在该范围内。

编辑:对于糟糕的格式,我们深表歉意!这是我的代码。我实际上已经让它工作得很好,我唯一的问题是,如果我输入两个值,在出现提示时说 1200 和 1400,而我脑海中的数字是 1337。告诉程序 1300 太低并且那么 1350 太高实际上导致计算机打印 1275 作为其第三次猜测。我想知道如何让它打印 1300 和 1350 (1325) 的平均值作为它的第三次猜测,而不是打印 1275。

import java.util.Scanner;

public class GuessingGame {
  public static void main(String[] args) {

  Scanner scnr = new Scanner(System.in);
  int lowerLimit = 0;
  int upperLimit = 0;
  int middleNumber = 0;
  char userInput = 'a';
  int almostLower = 0;
  int almostUpper = 0;

  System.out.println("Your number is in this range... (enter 2 numbers)");
  lowerLimit = scnr.nextInt();
  upperLimit = scnr.nextInt();
  middleNumber = (lowerLimit + upperLimit) / 2;

  almostLower = lowerLimit + 1;
  almostUpper = upperLimit - 1;

  System.out.print("Type 'h' for 'too high', 'l' for 'too low',");
  System.out.println(" and 'c' if I got it right."); //line too long

  do {
    System.out.println("Is it " + middleNumber + "?");
    userInput = scnr.next().charAt(0); 

    if (userInput == 'c') {
      System.out.println("I always win");
      break;
    }

    else if (userInput == 'h') { 

      if (middleNumber == almostLower) {
          System.out.println("Is it " + lowerLimit + "?"); 
          userInput = scnr.next().charAt(0);

          if (userInput == 'c') {
            System.out.println("I always win");
            break;
          }
      }
      else {
        middleNumber = calcMidNum(lowerLimit, middleNumber);
      }
    }

    else if (userInput == 'l') {

      if (middleNumber == almostUpper) {
        System.out.println("Is it " + upperLimit + "?"); 
        userInput = scnr.next().charAt(0);

        if (userInput == 'c') {
          System.out.println("I always win");
          break;
        }            
      }
      else {
        middleNumber = calcMidNum(middleNumber, upperLimit);
      }
  }
  } while (userInput != 'c');  
 }
 public static int calcMidNum(int a, int b) {
   int calcMid = (a + b) / 2;
   return calcMid;
 }
}

您没有调整下限和上限。

试试这个:

...
else if (userInput == 'h') { 
    upperLimit = middleNumber;
...

...
else if (userInput == 'l') {
    lowerLimit = middleNumber;
...