【问题标题】:Is Computer guess equal vs user thinking about? With Java计算机猜测与用户思考是否相等?使用 Java
【发布时间】:2014-10-16 23:25:48
【问题描述】:

我必须让用户想出一个介于 1 和 1000 之间的整数。他们不会将这个数字输入到他们只是想出来的计算机中。
- 这个程序会生成一个随机数。
- 用户必须指出猜测是否太高、太低或正确(提示程序可以让用户输入 1 表示高 2 表示低或 3 表示正确)
- 你的程序会做出另一个猜测。 - 用户必须指出猜测是否太高、太低或正确。

- 这个过程一直持续到计算机程序猜到用户号码为止。如果你的程序设计正确,它应该总是在 10 次或更少的时间内猜出这个数字。

现在我对它感到困惑!我写了这个程序,但我不知道如何修复它。

public class NumberGenerating {

    int generatedNumber;

    public void generateRandomNumber(){
        //generate a random number  
        this.generatedNumber=(int)(Math.random()*1000);
    //  System.out.println("Generated num is: "+this.generatedNumber);
    }
}

import java.util.Scanner;

public class NumberGuessing {
    byte count;
      NumberGenerating newNumber=new NumberGenerating();
      //boolean variable to determine if the loop should end 
      boolean shouldLoopEnd =true;
      Scanner input=new Scanner(System.in);
      byte userChoice;
      int tempNumber, temp2Number;
      int tempGenLowNumber=1000;
      int tempGenHighNumber=1000;
      int tempLowNumber;
//    int tempLowNumberOld;
      int tempHighNumber=1000;
//    int tempHighNumberOld;

      public void usingGenerateNumber(){
          newNumber.generateRandomNumber();  
      }

      public void isThatCorrect(){

          this.temp2Number= newNumber.generatedNumber;

          while(shouldLoopEnd){

          System.out.println ("The computer guess number is: " + newNumber.generatedNumber);
          System.out.println("You have three different choices:");
          System.out.println("1. The guessed number was too high.\n"
                + "2. The guessed number was too low\n"
                + "3. The guessed number was correct!");
          userChoice=input.nextByte();
          if(userChoice==3){
              System.out.println("Congratulation!\nGood Luck!");
              shouldLoopEnd=false;
          }

          else if(userChoice==2){ //Call that the number was too low
            //  this.tempLowNumberOld=this.tempNumber;

              while(true){
                  newNumber.generateRandomNumber();
                  this.tempNumber=newNumber.generatedNumber;

                  if(this.tempNumber>this.temp2Number && this.tempNumber<this.tempGenHighNumber  //this.tempNumber>this.tempLowNumberOld && 
                          && this.tempNumber<this.tempGenLowNumber){
                      this.tempGenLowNumber= this.tempNumber;
                      break;
                  }
              }
          }
              else if(userChoice==1){ //Call that the number was too high
            //    this.tempHighNumberOld=this.tempNumber;

                  while(true){
                      newNumber.generateRandomNumber();
                      this.tempNumber=newNumber.generatedNumber;

                      if(this.tempNumber<this.temp2Number && this.tempNumber<this.tempGenLowNumber   //this.tempNumber<this.tempHighNumberOld && 
                              && this.tempNumber<this.tempGenHighNumber){     
                          this.tempGenHighNumber= this.tempNumber;
                          break;
                  }
              }
}
          count++;
          System.out.println("Loop number counter is: "+count);
}
}
}

import java.util.Scanner;
public class MainLoop {  
       public static void main(String[] args) { 
             NumberGuessing newNumber=new NumberGuessing();
             newNumber.usingGenerateNumber();
             newNumber.isThatCorrect();
              } 
            } 

【问题讨论】:

  • 好吧,你已经安装了 JDK。 Java 运行时允许您附加一个调试器并使用它来单步执行您的程序。此类调试器可作为免费和开源软件获得。你为什么不用一个?
  • 你需要告诉我们程序在做什么,你期望它做什么,你已经从调试中发现了什么。
  • 你怎么了?

标签: java random numbers enter


【解决方案1】:

您实际上不应该生成随机数(除非作业标准要求您这样做)。

相反,您应该猜 500。这个数字将空间从 1...1000 分成两半。

如果用户的数字更高,请猜 750(介于 500 和 1000 之间)。继续将可能正确的用户数量范围分成两半,直到达到实际数量。

如果您确实在可能正确的数字空间内生成了一个新的随机数,则不能保证您在 10 步或更少的时间内完成。

【讨论】:

  • 这也是我在三年级时玩“猜1到10之间的数字”的方式;-)
  • 不是牛顿法。没有微积分。
猜你喜欢
  • 2019-07-17
  • 2016-04-19
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多