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) {
}
}
} }
также в строке a[j] = c.createNewAgent(name[j], "TryBehaviours", null); я получаю ошибку, связанную с:
@Override public void run () { if (target! = null) { target.run (); } }
что не так с моим кодом? .. этот стартовый класс хорошо работает с другими классами, но для этого он вызывает проблемы и ошибки
да, это была БОЛЬШАЯ ошибка, вызванная такой небрежностью, я удалил эту строку, но проблема с классом Starter остается.
Когда я использую этот код в 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
Я совсем не знаком с ДЖЕЙД. Тем не менее, правило большого пальца: 1) начните с чего-то простого, что работает, и 2) постепенно попробуйте добавить шаги, ведущие к желаемой функции, и посмотреть, где она ломается (возможно, с использованием автоматизированных методов тестирования), и 3) RTFM.
Для дальнейшего использования я просто хотел указать, что это никак не связано с JADE, это просто вопрос Java.




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