java - 如何只生成正数(见下文我的意思)

标签 java

所以我写了这个非常简单的程序,要求用户不断猜测数字,直到他们猜对了数字,如果他们选择的数字太小或太高,它就会告诉他们。我遇到的问题是数字应该只随机生成 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/

相关文章:

java - 在类中表示数学运算符

java - :validateRegex for not required inputText it's possible?

java - 我可以在java中为 'Interface'而不是 'Class'定义 'Object'吗?

java - 动态添加/删除表行

java - 单独的接口(interface)和实现 emf ecore

java - 我什么时候应该将所需的库提取/打包到生成的 JAR 中?

java - XMLStreamWriter.writeStartElement(前缀,本地名称,命名空间URI): no binding of prefix to namespace

java - HttpURL 连接! Connection.getInputStream 是 java.io.FileNotFoundException

java - 无法启动 Cassandra

java - 类初始化中的循环