Проблемы с использованием JADE и Excel

  1. Я работаю с JADE и хочу, чтобы агенты записывали некоторую информацию в файл Excel. что не так с моим кодом, что при отладке я получаю сообщение об ошибке: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 в строке MASTER1.write();, что с ним не так? ..

вот код:

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) {
        }
    }

} }

  1. также в строке a[j] = c.createNewAgent(name[j], "TryBehaviours", null); я получаю ошибку, связанную с:

    @Override public void run () { if (target! = null) { target.run (); } }

что не так с моим кодом? .. этот стартовый класс хорошо работает с другими классами, но для этого он вызывает проблемы и ошибки

Во-первых, почему Workbook.createWorkbook(f) вызывается дважды?

sofend 16.11.2018 22:37

да, это была БОЛЬШАЯ ошибка, вызванная такой небрежностью, я удалил эту строку, но проблема с классом Starter остается.

Mehregan Rahmani 17.11.2018 11:50

Когда я использую этот код в Starter, он работает, и агент Алиса записывает Run # в ячейку (0,0): String name = "Alice" ; AgentContainer c = getContainerController(); try { AgentController a = c.createNewAgent( name, "TryBehaviours", null ); a.start(); } catch (Exception e){}, но я хочу, чтобы было создано несколько агентов и записано в excel .... вы можете мне с этим помочь? @sofend

Mehregan Rahmani 17.11.2018 19:47

Я совсем не знаком с ДЖЕЙД. Тем не менее, правило большого пальца: 1) начните с чего-то простого, что работает, и 2) постепенно попробуйте добавить шаги, ведущие к желаемой функции, и посмотреть, где она ломается (возможно, с использованием автоматизированных методов тестирования), и 3) RTFM.

sofend 18.11.2018 20:04

Для дальнейшего использования я просто хотел указать, что это никак не связано с JADE, это просто вопрос Java.

belvederef 15.12.2018 21:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
102
1

Ответы 1

Я считаю, что проблема связана с методом, который вы вызываете с помощью MASTER1.write();. Возможно, вам потребуется указать выходной файл, в который будет записывать книгу.

Другие вопросы по теме