gpt4 book ai didi

Java 在方法处停止

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:20 26 4
gpt4 key购买 nike

我遇到了一个非常奇怪的 java 问题。

        System.out.println("finding bounds");
bounds = findBounds(shapes);
System.out.println("all bounds compared");

我有一个名为 findBounds 的方法。它运行了数百次,但在某一点程序甚至在到达方法的第一行之前就停止了。当我说停止时,我的意思是程序仍在运行,但永远不会进一步。这是 findBounds 方法的开头:

 private Rectangle2D findBounds(List<MapShape> shapes) {
System.out.println("in bounds method");

最后打印的是“寻找边界”。我检查过 shapes 不为空。我也没有内存不足。当我停止程序时,我得到这一行:

*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 880 

如有任何帮助,我们将不胜感激。如果您需要我提供更多代码,请告诉我。

整个方法:

private Rectangle2D findBounds(List<MapShape> shapes) {
System.out.println("in bounds method");
if (shapes == null || shapes.size() == 0){
System.out.println("shapes null or 0");
return new Rectangle2D.Double(0,0,0,0);
}
System.out.println("finding initial");
double maxX = shapes.get(0).getBounds2D().getMaxX();
double maxY = shapes.get(0).getBounds2D().getMaxY();
double minX = shapes.get(0).getBounds2D().getMinX();
double minY = shapes.get(0).getBounds2D().getMinY();

int total = shapes.size();
int actual = 0;

System.out.println("starting loop");
for(MapShape s : shapes){
actual++;
if(actual%1000 == 0){
System.out.println("finding bounds "+actual+"/"+total);
}
Rectangle2D bounds = s.getBounds2D();
double shapeMaxX = bounds.getMaxX();
double shapeMinX = bounds.getMinX();
double shapeMaxY = bounds.getMaxY();
double shapeMinY = bounds.getMinY();

if(shapeMaxX>maxX){
maxX = shapeMaxX;
} if(shapeMaxY>maxY){
maxY = shapeMaxY;
}if(shapeMinX<minX){
minX = shapeMinX;
}if(shapeMinY<minY){
minY = shapeMinY;
}
}

return new Rectangle2D.Double(minX,minY,maxX-minX,maxY-minY);
}

最佳答案

我发现了错误。在包含 findBounds 的方法中存在无限递归。不知何故 java dident 崩溃,但只是停止执行。

关于Java 在方法处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com