Javaprogram不';我没有意识到我';我返回一个布尔值

Javaprogram不';我没有意识到我';我返回一个布尔值,java,Java,我正在做一个程序,这个程序应该会产生大量的粒子,当它们靠近“墙”,也就是我的JFrame的边缘时,它们会被卡住 到目前为止还不错,这实际上是可行的,但现在我想实现,以便接近其他已经被卡住的粒子的粒子也被卡住。 我不会提供任何细节,因为我认为我的问题比这更基本 见下面的代码: public void updatePos() { for (int i = 0; i < numberofparticles; i++) { for (int j=0;

我正在做一个程序,这个程序应该会产生大量的粒子,当它们靠近“墙”,也就是我的JFrame的边缘时,它们会被卡住

到目前为止还不错,这实际上是可行的,但现在我想实现,以便接近其他已经被卡住的粒子的粒子也被卡住。 我不会提供任何细节,因为我认为我的问题比这更基本

见下面的代码:

    public void updatePos() {
        for (int i = 0; i < numberofparticles; i++) {
            for (int j=0; j< numberofparticles; j++) {
            if (particlelist.get(i).isStuck())  {
                continue;
            if (particlelist.get(i).isClose(particlelist.get(j))) {
                continue;
            particlelist.get(i).x += getL()*Math.cos(Math.random()*2*Math.PI);
            particlelist.get(i).y += getL()*Math.sin(Math.random()*2*Math.PI);
        }
        }
            }
        }
    }

        public void isClose(Particle p) {
            if (Math.sqrt(getX()*getX() +getY()*getY())-Math.sqrt(p.getX()*p.getX() +p.getY()*p.getY())<=2)  {
                isStuck();}
        }


    }
}

public boolean isStuck() {
        if (this.x>=610) {
            setX(610);
            return true;}
        else if (this.x<=5) {
            setX(5);
            return true;
        }
        else if (this.y<=5) {
            setY(5);
            return true;
        }
        else if (this.y>=610) {
            setY(610);
            return true;}
        return false;
    }
我的程序不理解isClose实际上正在调用isStuck(),它应该返回一个布尔值,因此我得到了错误:

“类型不匹配:无法从void转换为boolean”


我能改变我的方法让我的程序意识到我得到的实际上是一个布尔值吗

请按照以下内容更新您的方法

public boolean isClose(Particle p) {
    if (Math.sqrt(getX()*getX() +getY()*getY())-Math.sqrt(p.getX()*p.getX() +p.getY()*p.getY())<=2)  {
            return isStuck();
        }
    return <default value>;
}
public boolean isClose(粒子p){

如果(Math.sqrt(getX()*getX()+getY()*getY())-Math.sqrt(p.getX()*p.getX()+p.getY()*p.getY())您需要使用
return
关键字从如下所示的方法返回值:

public boolean isClose(Particle p) {
  if (Math.sqrt(getX()*getX() + getY()*getY())-Math.sqrt(p.getX()*p.getX() + 
                   p.getY()*p.getY())<=2)  {
     return isStuck();
  } else {
     return false;//default case
  }
}
public boolean isClose(粒子p){
if(Math.sqrt(getX()*getX()+getY()*getY())-Math.sqrt(p.getX()*p.getX()+
p、 getY()*p.getY())您“调用”
isStuck
,但实际上并没有“返回”。
public boolean isClose(Particle p) {
  if (Math.sqrt(getX()*getX() + getY()*getY())-Math.sqrt(p.getX()*p.getX() + 
                   p.getY()*p.getY())<=2)  {
     return isStuck();
  } else {
     return false;//default case
  }
}