java错误堆栈溢出

标签 java android stack-overflow

我想生成一个范围内的随机数,并且生成的数字不应在某个范围内发生冲突。
我使用了以下代码,但我收到 Stackoverflow 错误..有更好的解决方案吗?

static int [] xPositions=new int[10];
int WIDTH=700
public static void main(String args[])throws IOException
{

    if(generateRandomXPositions(10)){
        for(int i=0;i<10;i++){
          System.out.println(" Random Numbers "+i+"  :"+xPositions[i]);
        }
    }


}

private static boolean generateRandomXPositions(int n) {

    for(int i=0;i<10;i++){
        int temp=((int)0 + (int)(Math.random() * ((WIDTH - 0) + 1)));
        for(int j=0;j<xPositions.length;j++){
            if(xPositions[j]>temp-50 && xPositions[j]<temp+50){ // IF GENERATED NUMBER IS IN THIS RANGE IT SHOULD REGENERATE THE NUMBERS 
                generateRandomXPositions(10); 
            }
        }
        xPositions[i]=temp;
    }
    return true;
}

我知道问题就在这里

if(xPositions[j]>temp-50 && xPositions[j]<temp+50).   

下面的效果很好

`if(xPositions[j]==temp)`.  

但是我需要随机数应该遵循这个范围! .

许多人想知道递归循环的退出条件。但我相信如果随机数不在这个范围内,那么就没有必要进入递归循环。

更新1:

而且我相信编译器已经厌倦了寻找这个范围之间的数字!现在我发现不可能将 10 个宽度为 100px 的图像放入 700px 宽度的容器中而不碰撞 X 位置!

请看下图。让我们想象一下我想随机放置这个盒子而不发生碰撞......我该怎么做?

enter image description here

最佳答案

由于我认为这是作业,并且您的问题相当模糊,因此请尝试自己填写这些方法并将它们智能地结合起来。

public int generateRandom();
public boolean isAccepted(int number);
public void generate();

对于generate(),使用一些循环,例如:

int temp = generateRandom();
while (!isAccepted(temp)) temp = generateRandom();

关于java错误堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7633271/

相关文章:

java - 在提供一组 5 个左右的 URL 时生成 URL 模式

java - 在 Java 中实现 Prim 的 MST

java - Android RunTimeException 无法实例化类

c - 如何处理计算器溢出?

stack - 程序栈真的溢出了吗?

java - 使用递归斐波那契函数时发生堆栈溢出错误

java - @OneToMany 关系 hibernate

java - 静态嵌套类可以通过非静态扩展

android - 当引用库的颜色属性与父项目的颜色属性同名时,如何访问它

android - 在设置中创建 Android 首选项以设置密码