这是我的计划的背景.
一个函数有50%的机会什么都不做,50%自称两次.该计划完成的概率是多少?
我写了这段代码,显然效果很好.对每个人来说可能并不明显的答案是,该计划有100%的机会完成.但是当我运行这个程序时,会出现一个StackOverflowError(有多方便;)),在Math.Random()中出现.有人能指出我从哪里来,并告诉我,如果我的代码可能是错的?
static int bestDepth =0;
static int numberOfPrograms =0;
@Test
public void testProba(){
for(int i = 0; i <1000; i++){
long time = System.currentTimeMillis();
bestDepth = 0;
numberOfPrograms = 0;
loop(0);
LOGGER.info("Best depth:"+ bestDepth +" in "+(System.currentTimeMillis()-time)+"ms");
}
}
public boolean loop(int depth){
numberOfPrograms++;
if(depth> bestDepth){
bestDepth = depth;
}
if(proba()){
return true;
}
else{
return loop(depth + 1) && loop(depth + 1);
}
}
public boolean proba(){
return Math.random()>0.5;
}
Run Code Online (Sandbox Code Playgroud)
.
java.lang.StackOverflowError
at java.util.Random.nextDouble(Random.java:394)
at java.lang.Math.random(Math.java:695)
Run Code Online (Sandbox Code Playgroud)
.我怀疑堆栈及其中的功能数量是有限的,但我真的没有看到这里的问题. …
我的一个屏幕上有一个奇怪的问题,我甚至不知道在哪里看.我在数据库中查找项目并在单独的屏幕(不是实际屏幕,容器)中显示它们的详细信息.
奇怪的是,该程序与大多数项目完美配合,但在某些情况下,它永远不会有效.堆栈跟踪并没有真正帮助我,因为它们都不属于我的源代码.
各位同事,你对这个问题有什么想法或暗示吗?
java.lang.NullPointerException
at com.sun.javafx.scene.control.skin.ComboBoxListViewSkin.getIndexOfComboBoxValueInItemsList(ComboBoxListViewSkin.java:444)
at com.sun.javafx.scene.control.skin.ComboBoxListViewSkin.updateDisplayNode(ComboBoxListViewSkin.java:392)
at com.sun.javafx.scene.control.skin.ComboBoxListViewSkin.getDisplayNode(ComboBoxListViewSkin.java:229)
at com.sun.javafx.scene.control.skin.ComboBoxBaseSkin.updateDisplayArea(ComboBoxBaseSkin.java:125)
at com.sun.javafx.scene.control.skin.ComboBoxBaseSkin.computePrefHeight(ComboBoxBaseSkin.java:180)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.layout.Region.prefHeight(Region.java:1384)
at javafx.scene.control.Control.computePrefHeight(Control.java:804)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.control.Control.prefHeight(Control.java:686)
at javafx.scene.layout.Region.computeChildPrefAreaHeight(Region.java:1599)
at javafx.scene.layout.Region.getMaxAreaHeight(Region.java:1721)
at javafx.scene.layout.Region.computeMaxPrefAreaHeight(Region.java:1689)
at javafx.scene.layout.HBox.computePrefHeight(HBox.java:394)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.layout.Region.prefHeight(Region.java:1384)
at javafx.scene.layout.Region.computeChildPrefAreaHeight(Region.java:1599)
at javafx.scene.layout.VBox.getAreaHeights(VBox.java:394)
at javafx.scene.layout.VBox.computePrefHeight(VBox.java:373)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.layout.Region.prefHeight(Region.java:1384)
at javafx.scene.layout.Region.computeChildPrefAreaHeight(Region.java:1599)
at javafx.scene.layout.Region.getMaxAreaHeight(Region.java:1721)
at javafx.scene.layout.Region.computeMaxPrefAreaHeight(Region.java:1689)
at javafx.scene.layout.HBox.computePrefHeight(HBox.java:394)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.layout.Region.prefHeight(Region.java:1384)
at javafx.scene.layout.Region.computeChildPrefAreaHeight(Region.java:1599)
at javafx.scene.layout.Region.getMaxAreaHeight(Region.java:1721)
at javafx.scene.layout.Region.computeMaxPrefAreaHeight(Region.java:1693)
at javafx.scene.layout.StackPane.computePrefHeight(StackPane.java:320)
at javafx.scene.Parent.prefHeight(Parent.java:879)
at javafx.scene.layout.Region.prefHeight(Region.java:1384)
at com.sun.javafx.scene.control.skin.ScrollPaneSkin.computeScrollNodeSize(ScrollPaneSkin.java:874)
at com.sun.javafx.scene.control.skin.ScrollPaneSkin.layoutChildren(ScrollPaneSkin.java:753)
at javafx.scene.Parent.layout(Parent.java:1018)
at javafx.scene.Parent.layout(Parent.java:1028)
at javafx.scene.Parent.layout(Parent.java:1028) …Run Code Online (Sandbox Code Playgroud)