<分区>
我试图在不使用从 1 数到 10 的循环的情况下创建一个“ secret ”数字查找器。 现在我要尝试的是随机抽取 10 个数字,如果它们高于 secret 数字(在本例中为数字 5),则循环将只查找 5 – 10 之间的数字,或者如果它低于 0-5。
有时函数会给我一个输出,看起来像这样 更高:0 下 : 8 然后报错
Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Unknown Source)
at test1.testvoid$TestVoidMethod.main(testvoid.java:31)
否则 我可以得到输出
Higher : 1
The secret number is: 3
没有错误。
据我所知。 我知道这是一个问题,但很难指出问题出在哪里。
import java.util.Random;
public class testvoid {
public static class TestVoidMethod {
static int secretNumber = 3;
public static void main(String[] args) {
Random randomGenerator = new Random();
String result = "";
int[] myIntArray = new int[10];
int i = 0;
int lastGuess = 0;
result = checkWhichNumberThisIs(0);
while (!result.equals("Equal"))
{
if(result.equals("Higher"))
{
int randomInt = randomGenerator.nextInt(10 - (lastGuess - 1)) + lastGuess;
lastGuess = randomInt;
result = checkWhichNumberThisIs(randomInt);
}
else if(result.equals("Lower"))
{
int randomInt = randomGenerator.nextInt(lastGuess);
lastGuess = randomInt;
if(myIntArray.equals(randomInt)){
result = checkWhichNumberThisIs(randomInt);
}
}
myIntArray[i] = lastGuess;
i++;
}
}
public static String checkWhichNumberThisIs(int numberGuess) {
String result = "";
if (secretNumber < numberGuess) {
result = "Lower";
System.out.println("Lower " + numberGuess);
}
else if (secretNumber > numberGuess) {
result = "Higher";
System.out.println("Higher " + numberGuess);
}
else if (secretNumber == numberGuess) {
result = "Equal";
System.out.println("The secret number is: " + numberGuess);
}
return result;
}
}
}