首页 > 解决方案 > 绘制处理结束时出现空指针异常3

问题描述

我得到一个空指针异常,跟踪告诉我它在我拥有的函数内部。这个函数运行每一帧并做一些计算和一些东西。无论如何,问题是当我去调试时,单步执行每一行,函数运行良好,错误只出现在绘图循环结束时。

这个错误最近才出现,我所做的更改与所讨论的功能没有太大关系,所以......

跟踪中提到的函数检测对象是否触摸到某物,并对其进行操作。此外,跟踪给出了一个不存在的行号,我猜这是因为处理编译。

如果这很重要,我正在使用处理 4。

这是跟踪:

java.lang.NullPointerException
at ants$Ant.sense(ants.java:190)
at ants$Ant.go(ants.java:220)
at ants.draw(ants.java:44)
at processing.core.PApplet.handleDraw(PApplet.java:2201)
at processing.awt.PSurfaceAWT$10.callDraw(PSurfaceAWT.java:1422)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:354)

谢谢!

编辑:更多信息:这是一个蚂蚁模拟器,它在食物拾取时崩溃。这曾经在添加(看似)不相关的东西时工作并打破。它在由sense()函数管理的食物拾取时崩溃。Food 类只有一个位置和一个渲染函数。这是一些代码:

       void sense() { // The problematic function
        if (!detectFood && !carryFood) {
          float closest = viewRadius;
          Food selected = null;
          for (Food fd : foods){
            float foodDist = position.dist(fd.position);
              if(foodDist <= viewRadius) {
                  if(foodDist < closest) {
                  selected = fd;
                  closest = foodDist;
                }
            }
          }  
           if (selected != null){
             detectFood = true;
             foodFocused = selected;
           }
        } else {
          if(position.dist(foodFocused.position) < 2*r) {
            takeFood();
            detectFood = false;
          }
        }
      }
void draw() { // draw loop
  background(51);
  for (Food food : foods) {
    food.render();
  }
  for (Ant ant : ants) {
    ant.go();
  }
  for (int i=0; i < trails.size(); i++) {
    Trail trail = trails.get(i);
    if (trail.strenght <= 0)
      trails.remove(trail);
    else
      trail.go();
  }
  }

问题不在于路径,因为没有它它仍然会崩溃,

标签: nullpointerexceptionprocessing

解决方案


推荐阅读