java - Java猜数字游戏(不带扫描仪)
问题描述
所以它就像一个基本的服务器/客户端游戏,但数字必须由客户端生成,并且客户端必须进行逻辑猜测,例如,如果服务器说“输入较小的数字”到 5,“输入一个更大的数字”到0,客户的猜测必须在0到5之间。这部分怎么办?
解决方案
如果它是您正在努力解决的客户“猜测”部分,最简单的实现是简单地在您不会“太高”的最小数字和您知道“太低”的最大数字之间保持中间,例如:
public class NumberGuessingClientExample {
public static void main(String[] args) {
new NumberGuessingClient(new ServerStub()).findNumber();
}
public static class NumberGuessingClient {
private int min = Integer.MIN_VALUE;
private int max = Integer.MAX_VALUE;
private final NumberGuessingServer server;
public NumberGuessingClient(NumberGuessingServer server) {
this.server = server;
}
public int findNumber() {
Result result = null;
int value = nextGuess();
while ((result = server.makeGuess(value)) != Result.CORRECT) {
System.out.println(value + " = " + result);
if (result == Result.TOO_HIGH) {
max = value - 1;
} else if (result == Result.TOO_LOW) {
min = value + 1;
}
value = nextGuess();
}
System.out.println(value);
return value;
}
private int nextGuess() {
return (int) ((((long) max - (long) min) / 2) + min);
}
}
public interface NumberGuessingServer {
Result makeGuess(int value);
}
public static class ServerStub implements NumberGuessingServer {
private static final int RESULT = 3;
public Result makeGuess(int value) {
if (value > RESULT) {
return Result.TOO_HIGH;
}
if (value < RESULT) {
return Result.TOO_LOW;
}
return Result.CORRECT;
}
}
public enum Result {
CORRECT, TOO_HIGH, TOO_LOW
}
}
推荐阅读
- python - pip 或 pip3 install 命令抛出错误
- javascript - 带有顶部、底部和溢出的侧边导航
- java - Android Studio 2字节UTF-8序列的无效字节2
- python - 使用 Counter vs int vs lambda 创建 defaultdict
- terraform - 在 Terraform init 中传递变量
- python - (Python)如何根据几个正则表达式检查一个长字符串?
- javascript - Shopify 验证失败
- blockchain - 未找到用户定义的文字运算符(EOS-Docs- Smart Contract Development Data-Persistence )
- laravel - 如何限制 Vue/Laravel 中的类似按钮垃圾邮件
- javascript - JSON 插值