2015-09-11 26 views
0

我的问题是以下内容: 如何在不生成新的随机数的情况下使用相同的随机整数两次? 这是我的代码:Java:将相同的随机生成的数字传递到另一个函数

private static void draw() { 
    for (int a=random(2,4); a>0; a--) { 
     rectangle(random(0,20), random(0,10)); 
    }  
} 

private static void rectangle(int width, int height) { 
    halfRect(width, height); 
    halfRect(width, height); 

} 

private static void halfRect(int width, int height) { 
    walkRandom(width, true); 
    turnLeft(); 
    walkRandom(height, true); 
} 

我想用3线随机产生的整数中的函数矩形,它调用函数halfRect两次。我希望随机整数在运行函数的两次时保持不变,这与此代码不同。另外,我宁愿不使用变量,这是一个学校任务,他们可以在没有变量的情况下完成任务。 有什么建议吗? 谢谢!

+0

您可以创建变量和存储值有 – user996142

+3

你是说你认为这两个调用'halfRect'从'rectangle'不会使用相同的数字?因为这是不可能的。每个对“矩形”的调用可能有不同的数字,但在“矩形”内,这些数字不会改变 – CupawnTae

+0

@CupawnTae是正确的;方法参数具有绑定到它们的随机调用的结果,所以它们在方法执行期间不会改变而没有明确的改变。 –

回答

1

我不是100%确定你在问什么,但我认为这会解决你的问题。我们只需要用另一种方法添加另一个间接级别。这不会添加任何更多的本地变量(按要求)。相反,它使用方法参数。

private static void draw() { 
    drawWith(random(0,20), random(0,10)); 
} 

private static void drawWith(int width, int height) { 
    for (int a=random(2,4); a>0; a--) { 
     rectangle(width, height); 
    }  
} 

private static void rectangle(int width, int height) { 
    halfRect(width, height); 
    halfRect(width, height); 

} 

private static void halfRect(int width, int height) { 
    walkRandom(width, true); 
    turnLeft(); 
    walkRandom(height, true); 
} 
+0

尽管我更喜欢你的代码,但它的功能与OP相同;随机调用被评估并绑定到矩形方法的参数,所以它们不会改变。 –

+0

@BenKnoble我很难理解OP的原始问题,但我认为这一点。这并不意味着改变。但OP的方式是,它在for循环的每次迭代中生成新的随机数。用我的代码,它使用相同的。虽然现在我认识到,它只是要在彼此顶部绘制矩形2,所以我真的不明白这里的目标,TBH。 –

+0

是的。这听起来像他担心的那样,通过使用随机参数,矩形内的每个半正确的调用都会评估一个随机的,而不是。 –

相关问题