This site requires JavaScript, please enable it in your browser!
Greenfoot back
cx31
cx31 wrote ...

2019/7/1

ClassCastExeption

cx31 cx31

2019/7/1

#
So i tried to make grant2 always go to either the x or y coordinate of the next grant one to determine who the next grant one was I used this post Tricky situation... Get the nearest object but there was an error here is my code and the error java.lang.ClassCastException: class grant2 cannot be cast to class grant1 (grant2 and grant1 are in unnamed module of loader java.net.URLClassLoader @57092432) at grant.a(grant.java:67) at grant2.act(grant2.java:17) at greenfoot.core.Simulation.actActor(Simulation.java:567) at greenfoot.core.Simulation.runOneLoop(Simulation.java:530) at greenfoot.core.Simulation.runContent(Simulation.java:193)
   public double getDistance(Actor actor) {
    return Math.hypot(actor.getX() - getX(), actor.getY() - getY());
  }
   
   
  public Actor getNearestActor()                 
     {  
        List<Actor> nearActors = getObjectsInRange(300, Actor.class);  
        Actor nearestActor = null;  
        double nearestDistance = 300;  
        double distance;   
        for (int i = 0; i < nearActors.size(); i++)  
        {  
            distance = getDistance(nearActors.get(i));  
            if (distance < nearestDistance)  
            {  
                nearestActor = nearActors.get(i);  
                nearestDistance = distance;  
            }  
        }   return nearestActor;
 } 
    public grant()
    {
         GreenfootImage image = getImage();
        image.scale(image.getWidth() / 2, image.getHeight() / 2);
        setImage(image);
            
        b=System.currentTimeMillis();;
        
    }
    public void a(int range, int b)
    {Math.round(spin);
         List<grant> isi = getObjectsInRange(range, grant.class);
        x=getX();
        y=getY();
      int c=0;
        int spinn = (int) spin; 
        getWorld().showText("b"+spin, 400, 400);
      
       if(!isi.isEmpty())
     {  
           
          grant1 grant1 = (grant1) getNearestActor();
         

         spin =(Math.atan2(grant1.y-y,grant1.x-x)/Math.PI*360);
         if(Math.abs(getX()-grant1.x)!=0||Math.abs(getY()-grant1.y)!=0)
         {if(Math.abs(getX()-grant1.x)<=Math.abs(getY()-grant1.y))
           
            {   if(getX()-grant1.x<=0)
               {move(1);  
             }if(getX()-grant1.x>=0)
               {move(-1);  
             }
            }
            
          if(Math.abs(getY()-grant1.y)<=Math.abs(getX()-grant1.x))
         
            {  if(getY()-grant1.y<=0)
               { setLocation(getX(), getY()+1); 
             }if(getY()-grant1.y>=0)
               { setLocation(getX(), getY()-1);
             
            }
          }
         } 
  }
at greenfoot.core.Simulation.run(Simulation.java:183) so yeah hope someone could help me out fast
danpost danpost

2019/7/1

#
Replace line 43 with:
Actor actor = getNearestActor();
if (!(actor instanceof grant1)) return;
grant1 grant1 = (grant1)actor;
You need to login to post a reply.