在if语句中为方法调用正确的对象?

时间:2016-03-09 08:19:43

标签: java

我现在感到茫然。我有一个方法,.usePortal()应该检查一个位置是否为空,如果没有,则将该人传送到下一个连接的位置。但是,我仍然坚持要求召唤传送部件的对象。

.state('app', {
    url: '/app/:appId',
    templateUrl: 'app/components/project/project.html',
    controller: 'projectController',
    resolve: {
        loadPlugin: function ($ocLazyLoad) {
            return $ocLazyLoad.load([
                {
                    name: 'projectModule',
                    serie: true,
                    files: [
                            'app/components/project/projectCharts.js', 
                            'app/components/project/utils/projectUtils.js', 
                            'app/components/project/projectModule.js'
                           ]

                }

            ]);
        }
    }
})

这是其他类

public void usePortal(){
    if(agentLocation != null){
        transport(this);
    }
}

}

5 个答案:

答案 0 :(得分:1)

  

它不会发回任何东西/随机终止

你的switch语句没有中断,因此它只会提示用户一次并一直流向quit并退出循环。

  switch(userCommand){
    case "help":
        System.out.println("go, help, look, quit, where");
        break;
    case "where":
        student.getAgentLocation().toString();
        break;
    case "look":
        student.getAgentLocation().toStringLong();
        break;
    case "quit":
        continueCommand = false;
  }
  

第35行,它表示返回位置,描述和门户。但在给它一个没有门户的房间后,它会出错,然后终止。有没有办法使用类似于重载的东西并在没有门户网站时使用返回?

Space课程中:

您可以先检查门户网站是否存在:

public String toStringLong() {
    String descPortal = "Empty portal";
    if(portal != null)
        descPortal = portal.portalToStringLong();
    return this.name + ": " + this.description + " with a " + descPotal;
}

答案 1 :(得分:0)

调用代理上的对象,因为您可以控制代理对象中的空间,也可以使用代理中的空间变量来控制门户。

答案 2 :(得分:0)

如果我正确理解您的问题,您需要定位正确的门户网站并从该对象调用传输。例如,我想象这样的事情:

public void usePortal(Portal targetPortal){
    if(agentLocation != null){
        targetPortal.transport(this);
    }
}

我认为如果您有多个门户网站,这就是您想要的,现在您必须找到一些方法将正确的门户网站输入到usePortal方法中,但如果这是一个游戏,我将假设您选择门户网站或也许应该选择最接近Agent的门户作为targetPortal。

也许,您想要的是访问代理所在空间中存在的同一个门户网站,这可以通过类似的方式轻松完成:

public void usePortal(){
    if(agentLocation != null){
        agentLocation.getPortal().transport(this);
    }
}

也许你想在尝试调用传输方法之前检查agentLocation.getPortal()!= null上的空值。

关于在键入空间对象时有关nullPointer的最新问题:

public String toStringLong() {
    return this.name + ":" +" " + this.description + " with a " + portal.portalToStringLong();
}

在此内容中,您应该重写它以在尝试使用门户网站portalToStringLong()方法之前检查是否存在门户网站:

public String toStringLong() {
    String portalString = " without a portal.";
    if(portal != null)
        portalString = " with a " + portal.portalToStringLong();
    return this.name + ":" +" " + this.description + portalString;
}

答案 3 :(得分:0)

您需要知道要使用的门户网站。您是否可以将Portal作为参数引入usePortal,然后将agentLocation设置为门户网站的目标?

答案 4 :(得分:0)

尝试创建新的Portal对象,例如

Portal portal = new Portal();

然后调用传输,

portal.transport(this);