使用JADE和Excel的问题 我正在与JADE合作,我希望代理在am excel文件中写入一些信息。调试时收到错误的代码有什么问题:java.lang.IndexOutOfBoundsException:Index:0,Size:0在MASTER1.write()行它有什么问题

使用JADE和Excel的问题 我正在与JADE合作,我希望代理在am excel文件中写入一些信息。调试时收到错误的代码有什么问题:java.lang.IndexOutOfBoundsException:Index:0,Size:0在MASTER1.write()行它有什么问题,java,excel,multithreading,agents-jade,Java,Excel,Multithreading,Agents Jade,以下是代码: public class TryBehaviours extends Agent { @Override protected void setup(){ System.out.println("Agent" + this.getLocalName() + " Says: Hellowww" ); addBehaviour(new DataStore(this)); } public class DataStore extends OneShotBehaviou

以下是代码:

public class TryBehaviours extends Agent {
@Override
protected void setup(){

    System.out.println("Agent" + this.getLocalName() + " Says: Hellowww" );

    addBehaviour(new DataStore(this));

}
public class DataStore extends OneShotBehaviour{

    public DataStore(Agent a) {
        super(a);
    }


    @Override
    public void action() {
        try {
            File f;
            f = new File ("C:\\Users\\MR\\Desktop\\MyDatabase.xls");
            WritableWorkbook MASTER1 = Workbook.createWorkbook(f);//MASTER is the name of our database
            WritableSheet History_Table = MASTER1.createSheet("History_Table", 0);//names the first sheet as History_Table
            MASTER1 = Workbook.createWorkbook(f);//makes the Database.xlx writable

            Label L00 = new Label (0,0,"RUN#");
            History_Table.addCell(L00);
            MASTER1.write();
            System.out.println("finished...");
            MASTER1.close();
        } 
        catch (WriteException | IOException ex) {
            Logger.getLogger(TryBehaviours.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}
}

这是我的入门课:

public class Starter extends Agent {

//int members = 50;

String[] name = new String[10];
AID[] AIDlist = new AID[10];

@Override
protected void setup() {
    for (int i = 0; i < name.length; i++) {
        name[i] = "Agent" + (i + 1);
        AIDlist[i] = new AID(name[i], AID.ISLOCALNAME);
    }
    AgentContainer c = getContainerController();
    AgentController[] a = new AgentController[10];
    for (int j = 0; j < a.length; j++) {
        try {
            a[j] = c.createNewAgent(name[j], "TryBehaviours", null);
            a[j].start();
            System.out.println(" Created: " + AIDlist[j]);
        } catch (Exception e) {
        }
    }
公共类启动器扩展代理{
//国际成员=50;
字符串[]名称=新字符串[10];
AID[]AIDlist=新的AID[10];
@凌驾
受保护的无效设置(){
for(int i=0;i
} }

  • 另外,在第
    a[j]=c.createNewAgent(名称[j],“TryBehaviours”,null)行我收到与以下内容相关的错误:

    @凌驾 公开募捐{ 如果(目标!=null){ target.run(); } }


  • 我的代码怎么了。。这个Starter类对于其他类很有效,但是对于这个类,它会导致问题和错误

    我相信问题与您使用
    MASTER1.write()调用的方法有关
    您可能需要为工作簿指定一个要写入的输出文件。

    首先,为什么要调用
    workbook.createWorkbook(f)
    两次?是的,这是由于太粗心造成的一个大错误,我删除了那一行,但类Starter仍然存在问题。当我在Starter中使用此代码时,它工作并且代理Alice在单元格(0,0)中写入Run#:
    String name=“Alice”;AgentContainer c=getContainerController();请尝试{AgentController a=c.createNewAgent(名称,“TryBehaviours”,null);a.start();}catch(异常e){}
    ,但我希望创建多个代理并在excel中编写。。。。你能帮我吗@索芬迪对杰德一点也不熟悉。这就是说,经验法则是:1)从简单有效的东西开始,2)逐步尝试添加通向您想要的功能的步骤,看看它在哪里中断(可能使用自动测试方法),以及3)RTFM。为了以后的参考,我只想指出,这与JADE没有任何关系,这只是一个Java问题。