Java - 处理:无法在增强型for循环中调用其他类

问题描述 投票:-1回答:2

我试图在我的游戏中使用Java(Processing)增强的for循环,但似乎我无法在其他循环中调用其他类。关于如何解决这个问题的任何想法?

void setup() {
  size(1000, 1000);

  rLife = new ArrayList<RegLife>();

  for (int i = 0; i < rLife.size(); i++) {
    rLife.add(new RegLife(width/2, height/2));
  }

  lLives = new ArrayList<largeLife>();

  for (int i = 0; i < lLives.size(); i++) {
    lLives.add(new largeLife(width/2, height/2));
  }
}


void draw() {
  background(255);

  for (largeLife l : lLives) {
    l.seek(r);

    l.update();
    l.display();
  }
  for (RegLife r : rLife) {
    r.stayWithin();

    r.update();
    r.walk();
    r.withinRadius(r);
    r.display();
  }
}

我遇到的问题是

for (largeLife l : lLives) {
     l.seek(r);

我收到错误消息“变量'r'不存在”但我在课堂上调用了它

 void seek(RegLife r) {
    PVector desired = PVector.sub(r.posi,posi);
    desired.setMag(speed);

    PVector steer = PVector.sub(desired,velo);
    applyForce(steer);

  }

有这个问题的解决方案吗?

java for-loop processing
2个回答
1
投票

简单地说,for-block具有明确定义的范围,其开头和结尾以及用于单行/多行块的{}s以及用于省略{}s的for-blocks的一个语句。

因此,在draw中,您尝试使用一个真正不存在的变量。在您的示例中,r仅在此范围内:

  for (RegLife r : rLife) {
      // use r here all you want.
  }

但是,你不能在这里使用它:

  for (largeLife l : lLives) {
      // r does not exist here..
      l.seek(r);
  }

根据你想要做的事情你可以像这里一样嵌套它们:

  for (RegLife r : rLife) {
      // use r here all you want.
      for (largeLife l : lLives) {
          // and use it here too..
          // if that makes sense.
          l.seek(r);
      }
  }

0
投票

好吧..是的。在该绘制方法中没有变量“r”。

© www.soinside.com 2019 - 2024. All rights reserved.