Java:多次设置int值

标签 java math integer int

我使用此方法获取屏幕外的随机位置来生成所有僵尸。

public void initZombie(){ 
            for(int i = 0; i < 100; i++){
                int randomXSpawn = (int) Math.random() * -300 + -50;
                int randomYSpawn = (int) Math.random() * -100 + 800;
                int[][] spawn = {{randomXSpawn,randomYSpawn}};
                for(int j = 0; j < spawn.length; j++){
                    zombie.add(new Zombie(spawn[j][0],spawn[j][1]));
                }
            }
        }

我遇到的问题是,获取随机位置的两个整数仅运行一次,因此每个僵尸都会在彼此内部完全相同的位置生成。我怎样才能让整数运行多次,以便僵尸在不同的位置产卵?我尝试将它们放在 run() 方法中,然后运行两次,以便第一个僵尸在一个位置生成,然后其他 99 个僵尸在彼此内部的另一个位置生成。

最佳答案

您正在类型转换Math.random()为对该值取整的整数。自 Math.random()生成一个 double 值 0 <= x < 1 ,它总是四舍五入为 0。这就是为什么你会得到完全相同的生成位置。

您需要在类型转换中添加括号:

int randomXSpawn = (int) (Math.random() * -300 + -50);
int randomYSpawn = (int) (Math.random() * -100 + 800);

关于Java:多次设置int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202896/

相关文章:

java - 如何使用instanceof关键字Java

java - 如何将给定整数与可能的根进行比较

java - 尽管在另一个线程中,代码仍会抛出 NetworkOnMainThread 异常

java - 为什么嵌套的子类可以访问其父类的私有(private)成员,而孙子却不能?

matlab - 检查正方形是否落在三角形内的最简单/有效的方法

javascript - 绕原点旋转点

math - 椭圆的标准形式

java - 我的算法出了点问题

java - 如何在播放完毕后立即有效地关闭大量剪辑?

c - 在字符后读取多个数字