对于我的Java类,我正在编写一个小程序,首先选择一个介于1和100之间的int
数字。然后,它会提示用户开始猜测正确的int
。如果用户对int
的猜测过高或过低,程序会打印出一个新范围,供他们在该范围内进行猜测。如果用户输入字符串
或双精度
,程序只需重新要求用户输入整数
,但不会以任何方式更改范围。
示例输出(当机密号为20时)如下所示:
c:\csc116> java GuessingGame Guess the secret number! Enter a number between 1 and 100 (inclusive): 45 Enter a number between 1 and 44 (inclusive): jlkj Enter a number between 1 and 44 (inclusive): 31.0 //double Enter a number between 1 and 44 (inclusive): 1000 //outside the range of 1-100 Enter a number between 1 and 44 (inclusive): 34 Enter a number between 1 and 33 (inclusive): 15 Enter a number between 16 and 33 (inclusive): 20 You win!
该项目似乎已经基本完成,但只有一个例外。其中一个要求是,当用户键入的int
超出我们给定的1和100范围时,打印输出消息不会改变(如上面的示例所示)。这就是我被难倒的地方,我想看看是否有人能帮我找到正确的答案。
import java.util.*;
public class GuessingGame {
public static void main(String[] args) {
introduction();
Scanner console = new Scanner(System.in);
Random rand = new Random();
int guess = 0;
int minimum = 1;
int maximum = 100;
int secretNumber = rand.nextInt(100) + 1;
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
while (guess != secretNumber) {
if (console.hasNextInt()) {
guess = console.nextInt();
if (guess > secretNumber) {
maximum = guess - 1;
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if (guess < secretNumber) {
minimum =guess + 1;
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if (guess == secretNumber) {
System.out.println("You win!");
}
} else {
console.next();
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
}
}
public static void introduction() {
System.out.println("Guess the secret number!");
}
}
您只检查相对于机密号码的猜测号码。你缺少的是相对于最大值和最小值的猜测数的检查。例如:
if (guess > maximum) {
System.out.print("Too high!");
} else if (guess < minimum) {
System.out.print("Too low!");
}
当您还想提示用户初始最小值和最大值时,应将这两个值分开保存,并在循环开始时插入另一个(如果
)-检查
guess = console.nextInt();
if (guess > originalMaximum) {
System.out.print("Enter a number less then " + originalMaximum);
}
你有:
guess = console.nextInt();
if (guess > secretNumber) {
maximum = guess - 1;
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if (guess < secretNumber) {
minimum =guess + 1;
System.out.print("Enter a number between " + minimum + " and " + maximum + " (inclusive): ");
}
if (guess == secretNumber) {
System.out.println("You win!");
}
现在,您根本没有检查最小/最大范围。你必须添加一个明确的检查,但需要注意的是(在这里的其他答案中遗漏了),如果输入超出范围,你必须确保不要将其作为猜测处理。您当前使用if
s而不使用else
s的风格意味着您在实现它时必须小心。你有几个选择,例如:
guess = console.nextInt();
if (guess < minimumAllowed || guess > maximumAllowed) {
// handle error
} else {
// handle valid input
if (guess > secretNumber) {
// ...
}
if (guess < secretNumber) {
// ...
}
if (guess == secretNumber) {
// ...
}
}
或:
guess = console.nextInt();
if (guess < minimumAllowed || guess > maximumAllowed) {
// handle error
} else if (guess > secretNumber) {
// ...
} else if (guess < secretNumber) {
// ...
} else if (guess == secretNumber) {
// ...
}
或者,坚持你目前的风格,只要你不必在循环中再做任何不相关的逻辑(在你的程序中似乎就是这样):
guess = console.nextInt();
if (guess < minimumAllowed || guess > maximumAllowed) {
// handle error
continue;
}
// handle valid input
if (guess > secretNumber) {
// ...
}
if (guess < secretNumber) {
// ...
}
if (guess == secretNumber) {
// ...
}
问题内容: 我正在尝试将一个数字范围转换为另一个数字范围,并保持比率。数学不是我的强项。 我有一个图像文件,其中点值的范围可能在-16000.00到16000.00之间,尽管典型范围可能会小得多。我想做的是将这些值压缩到0-100的整数范围内,其中0是最小点的值,而100是最大点的值。即使丢失了一些精度,它们之间的所有点也应保持相对比率,我想在python中做到这一点,但即使是通用算法也足够。我更
问题 你想定义一个数组的范围。 解决方案 在 CoffeeScript 中,有两种方式定义数组元素的范围。 myArray = [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] myArray = [1...10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] 要想反转元素的范围,则可以写成下面这样。 myLargeArray =
我试图验证一个逗号分隔的数字列表1-384唯一(不重复)。 即。 1, 2, 3, 5, 6, 7, 9有效 1-3, 5-7, 9有效 2,2,6无效 2,无效 1, 2, 3, 4, 15, 6, 7, 385无效,因为最后一个数字大于384 我尝试了以下RegEx模式,但还不够:
问题内容: 给定一个,我可以做,但不能两者都做,因为它们中的任何一个都会消耗流。 现在假设我有 如何获得信息流的范围?(除以外) 问题答案: 您可以调用的方法。它返回一个包含最小值和最大值以及其他一些统计信息的对象:平均值,计数和总和。 并有类似的方法。
问题内容: 我最近开始学习python3。 在 python 2 中,可以使用函数来分配列表元素。 如使用功能时在 python 3 中一样 为什么会这样呢? python为什么要进行此更改? 是恩赐还是祸根? 问题答案: Python 3 在很多地方使用了 迭代器 ,而 python 2 使用了 列表 。文档给出了详细的解释,包括对的更改。 优点是,如果您使用大范围的迭代器或映射, Python
我正在尝试编写一个Heap排序方法,它只在传入方法的给定范围内执行排序。传入的范围是低和高,这些值对应于堆中的值,而不是堆的索引。例如,输入数组可能是:28 10 49 20 59 61 17,如果low=49,high=61,Heap排序后的结果数组将看起来像这样:28 10 20 49 59 61 17。范围之外的值保持不变。我已经有了一个工作的Heap排序方法,但我的问题是如何修改这个方法以