我现在感到茫然。我有一个方法,.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);
}
}
}
答案 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);