【问题标题】:Issue with "Math.random()" in JavaJava 中的“Math.random()”问题
【发布时间】:2017-10-19 17:49:50
【问题描述】:

我想编写一个在窗口上绘制一些特定点的代码。我有 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中的fillRect。但即使你解决了这个问题,我也不明白为什么你会期望它在随机位置绘制。
  • 谢谢!我总是更新位置,以便它绘制在一个新位置。我不是说随机位置,而是随机选择三个点中的一个来使用。但是现在只抽了3分……
  • 有了这些值,它就不能超出窗口。

标签: java random window


【解决方案1】:

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

【讨论】:

  • 谢谢,我已经更新了。不过,它只会画 3 个点,我希望它总是从实际位置到所选点
  • 你能打印出填充的坐标吗?您可能还需要随机更改 e1、e11 等的值,也可以尝试为所有 window.fillRect((pos1 + e1) / 2, (pos2 + e11) / 2, 5, 5); 添加括号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
相关资源
最近更新 更多