Hallo,
um die Problemdaten für eine Scheduling-Anwendung zu bekommen, lese ich (irgend-) eine vorher angelegte Problemdatei mittels FileReader/String Tokenizer ein und werfe sie in einen Arbeits-Vector. Der sieht dann beispielsweise so aus:
SourceVec: [JobShop, m=, 4, n=, 3, PT, 8, 8, 12, 12, 15, 5, 13, 15, 7, 11, 10, 14, MO, 2, 4, 3, 1, 2, 4, 1, 3, 4, 1, 3, 2]
Damit kann man allerdings n.n. allzu viel anfangen, also soll er zerlegt werden und anders zusammengefuegt werden (das ursprungsproblem ist eine art matrix):
Über mehrere Hilfsvektoren(OpNames, ProcessTimes, MOVector) soll ein handhabbarer Operationsvektor entstehen, aus dem ich für jede Operation (hat einen Namen, einen PT-Wert, einen MO-Wert etc.) des Ursprungstableaus (jeweils ein "Vector-im-operationsVector" mit zugehörigen Werten Name, PT, MO, Vorgänger) die einzelnen Werte auslesen kann - die Zeilen dazu:
Diese Prozedur ergibt den Vector operations, der so aussieht (beschnitten des Patzes wegen ;-) )
operations:
Alle Operationen ([Op_AuftrNr_OpNr, PT, MO, Vorgaenger]:
[[Operation_1_1, 8, 2, null], [Operation_1_2, 8, 4, Operation_1_1], [Operation_1_3, 12, 3, Operation_1_2], [Operation_1_4, 12, 1, Operation_1_3], [Operation_2_1, 15, 2, Operation_1_4], ... , [Operation_3_4, 14, 2, Operation_3_3]]
Das Problem: kein Zugriff auf die einzelnen Werte der "Vectoren-im-operationsVector" mehr möglich, also ein Zugriff operations.elementAt(0) gibt mir den gesamten Vector
[Operation_1_1, 8, 2, null] als EIN OBJECT zurück, auf dessen einzelne Werte ich nicht zugreifen kann (z.B. die 8 auslesen o.ä.; JBuilder schlägt mir so unnütze Sachen wie equals, getclass oder toString vor - das scheinen mir einfache und undifferenzierte Object-Methoden zu sein).
Einen versuchten Zugriff ' operations.elementAt(0).elementAt(0);' quittiert JBuilder mit der Fehlermeldung 'Symbol kann nicht aufgelöst werden: Methode elementAt(int) in Klasse java.lang.Object in Zeile x'.
allerdings ergibt die Anfrage
operations.elementAt(0).getClass();
eindeutig, dass es sich beim Element '0' um einen Vector handelt (Ausgabe: class java.util.Vector). Sehr merkwürdig.
Vectoren legen doch als Elemente Objekte an - dabei ist es doch egal, ob ein Object ein String oder ein Vector ist. Warum klappt dann der Zugriff nicht?
Lege ich statt des operations-Vectors ein operations-Vector[n] mit n Einzelvectoren an, also statt operations.add(ops); s.o. (*casus knacktus*)
operations = ops; wobei 'i' der fortlaufende Index des Arrays ist,
wirft er mir beim Auslesen des Selben
( System.out.println("element 0 aus operations: \r \n"+ operations[0].elementAt(0)); )
eine ArrayIndexOutOfBoundsException: 0 .
Ist das Array leer geblieben?????
Hat jemand eine Idee zum sinnvollen Umgang mit (insbes. Zugriffen AUF) Elemente(-n) in Vectoren, "Vectoren-in-Vectoren" und Vector-Arrays?
Vielen Dank,
chris.
um die Problemdaten für eine Scheduling-Anwendung zu bekommen, lese ich (irgend-) eine vorher angelegte Problemdatei mittels FileReader/String Tokenizer ein und werfe sie in einen Arbeits-Vector. Der sieht dann beispielsweise so aus:
SourceVec: [JobShop, m=, 4, n=, 3, PT, 8, 8, 12, 12, 15, 5, 13, 15, 7, 11, 10, 14, MO, 2, 4, 3, 1, 2, 4, 1, 3, 4, 1, 3, 2]
Damit kann man allerdings n.n. allzu viel anfangen, also soll er zerlegt werden und anders zusammengefuegt werden (das ursprungsproblem ist eine art matrix):
Über mehrere Hilfsvektoren(OpNames, ProcessTimes, MOVector) soll ein handhabbarer Operationsvektor entstehen, aus dem ich für jede Operation (hat einen Namen, einen PT-Wert, einen MO-Wert etc.) des Ursprungstableaus (jeweils ein "Vector-im-operationsVector" mit zugehörigen Werten Name, PT, MO, Vorgänger) die einzelnen Werte auslesen kann - die Zeilen dazu:
Code:
Vector operations = new Vector();
for (int i=0; i<= (OpNames.size()-1); i++){
Vector ops = new Vector();
ops.add(OpNames.get(i));
ops.add(ProcessTimes.get(i));
ops.add(MOVector.get(i));
//vorgaenger, achtung, koennte nullpointerexception werfen:
try{
ops.add(OpNames.get(i-1));
(*casus knacktus*) operations.add(ops); }
catch(ArrayIndexOutOfBoundsException aibou){ops.add(null);}
Diese Prozedur ergibt den Vector operations, der so aussieht (beschnitten des Patzes wegen ;-) )
operations:
Alle Operationen ([Op_AuftrNr_OpNr, PT, MO, Vorgaenger]:
[[Operation_1_1, 8, 2, null], [Operation_1_2, 8, 4, Operation_1_1], [Operation_1_3, 12, 3, Operation_1_2], [Operation_1_4, 12, 1, Operation_1_3], [Operation_2_1, 15, 2, Operation_1_4], ... , [Operation_3_4, 14, 2, Operation_3_3]]
Das Problem: kein Zugriff auf die einzelnen Werte der "Vectoren-im-operationsVector" mehr möglich, also ein Zugriff operations.elementAt(0) gibt mir den gesamten Vector
[Operation_1_1, 8, 2, null] als EIN OBJECT zurück, auf dessen einzelne Werte ich nicht zugreifen kann (z.B. die 8 auslesen o.ä.; JBuilder schlägt mir so unnütze Sachen wie equals, getclass oder toString vor - das scheinen mir einfache und undifferenzierte Object-Methoden zu sein).
Einen versuchten Zugriff ' operations.elementAt(0).elementAt(0);' quittiert JBuilder mit der Fehlermeldung 'Symbol kann nicht aufgelöst werden: Methode elementAt(int) in Klasse java.lang.Object in Zeile x'.
allerdings ergibt die Anfrage
operations.elementAt(0).getClass();
eindeutig, dass es sich beim Element '0' um einen Vector handelt (Ausgabe: class java.util.Vector). Sehr merkwürdig.
Vectoren legen doch als Elemente Objekte an - dabei ist es doch egal, ob ein Object ein String oder ein Vector ist. Warum klappt dann der Zugriff nicht?
Lege ich statt des operations-Vectors ein operations-Vector[n] mit n Einzelvectoren an, also statt operations.add(ops); s.o. (*casus knacktus*)
operations = ops; wobei 'i' der fortlaufende Index des Arrays ist,
wirft er mir beim Auslesen des Selben
( System.out.println("element 0 aus operations: \r \n"+ operations[0].elementAt(0)); )
eine ArrayIndexOutOfBoundsException: 0 .
Ist das Array leer geblieben?????
Hat jemand eine Idee zum sinnvollen Umgang mit (insbes. Zugriffen AUF) Elemente(-n) in Vectoren, "Vectoren-in-Vectoren" und Vector-Arrays?
Vielen Dank,
chris.