java - Java 中的 "Math.random()"问题

标签 java random window

我想编写一个在窗口上绘制一些特定点的代码。我有 3 个不同的点 $(e1,e11), (e2,e22), (e3,e33)$。我想随机选择其中之一,并根据输出绘制不同的点。

public class ChaosGame {

    public static void main(String[] args) {
        Window window = new Window("Chaos", 800, 800);
        window.open();

        int e1 = 420;
        int e11 = 170;
        int e2 = 230;
        int e22 = 670;
        int e3 = 700;
        int e33 = 540;

        while (window.isOpen()) {// ändere den Fensterinhalt
            int pos1 = 100;
            int pos2 = 300;
            int i = (int) (Math.random() * 3);

            if (i == 0 || i == 3) {
                window.fillRect(pos1 + e1 / 2, pos2 + e11 / 2, 5, 5);
                pos1 = e1 / 2;
                pos2 = e11 / 2;
                window.refresh();
            } else if (i == 1) {
                window.fillRect(pos1 + e2 / 2, pos2 + e22 / 2, 5, 5);
                pos1 = e2 / 2;
                pos2 = e22 / 2;
                window.refresh();
            } else {
                window.fillRect(pos1 + e3 / 2, pos2 + e33 / 2, 5, 5);
                pos1 = e3 / 2;
                pos2 = e33 / 2;
                window.refresh();
            }
        }
    }
}

fillRect 在新窗口中绘制我的点。现在,当我运行这个程序时,只出现两点,即使它应该继续“while window.isOpen”,直到我关闭窗口。我认为我的 Math.random() 可能有问题。

最佳答案

您需要将 else 语句中的 window.fillRect(pos1 + e2/2, pos2 + e22/2, 5, 5); 更改为 window.fillRect(pos1 + e3/2, pos2 + e33/2, 5, 5);。您在两种情况下绘制相同的东西。

关于java - Java 中的 "Math.random()"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835986/

相关文章:

java - PreferenceManager.getDefaultSharedPreferences 中的空指针异常

java - java中重写equals方法比较多个字段

java - 应用程序终止或销毁时文件下载不完整

r - 如何在 R 中生成 GUID?

haskell - 生成随机元组 Haskell

sql - Presto SQL 窗口聚合回顾 x 小时/分钟/秒

java - kotlin:2个lambda参数的语法

Kotlin:从列表中返回随机元素

c# - 编写 Windows Media Center 扩展程序

javascript - 关闭 Chrome 中的弹出窗口似乎不会释放内存