所以我写了这个非常简单的程序,要求用户不断猜测数字,直到他们猜对了数字,如果他们选择的数字太小或太高,它就会告诉他们。我遇到的问题是数字应该只随机生成 1 到 100,但 java 将其视为 -100 到 100。无论如何,我想知道如何让它只返回正数。
代码如下:
import java.util.Random;
import java.util.Scanner;
public class GameMain {
public static void main(String[] args) {
int guess = 101;
Random r = new Random();
int answer = r.nextInt()%101;
System.out.println("Whats the number?");
Scanner input = new Scanner(System.in);
while (guess!=answer) {
guess = input.nextInt();
if (guess > answer) {
System.out.println("Too high!");
}
else if (guess < answer){
System.out.println("Too low!");
}
else if (guess == answer){
System.out.println("Correct you win!");
}
}
}
}
最佳答案
Random 类有另一个 nextInt(...)
方法,它接受一个参数并返回一个介于 0 和 1 之间的随机数减去传入的数字。所以如果你传入 100 ,您将得到一个介于 0 和 99 之间的伪随机数。因此,只需对您的随机对象 r 调用 r.nextInt(100) + 1
即可获得 1 到 100 之间的数字。
一般来说,如果你想要一个介于a和b之间的随机数,你会使用
r.nextInt(b - a + 1) + a
关于java - 如何只生成正数(见下文我的意思),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342241/