Datenblock in Feld
-
Hallöchen, da die "richtige" Java-Konkurrenz momentan dich ist (www.java-forum.net) muss ich mal hier anfragen....
Ich habe einen String in diesem Format:
abc:sdf:affsgh::asafgha:etc...
Also jeder Datenblock ist unterbrochen von einem Doppelpunkt. Nun möchte ich das in ein Feld sortieren (2dim) damit man es bequemer auslesen kann. Hat jmd eine Idee, wie man das schnell und ordentlich machen könnte?
-
Nun möchte ich das in ein Feld sortieren (2dim) damit man es bequemer auslesen kann
Aha, wie soll dieses Feld denn aussehen?
Auser der Struktur des Terms wird mir das für 2-dim nicht so ganz ersichtlich1!
-
also, 2dim ist klar, also "tabellenmäßig". Dann wird es nur Strings enthalten, und da das File halt
xy:fasdf:afs:afsd << 1. zeile mit 4 Datenblöcken
asd:afdfgsg:asdff << 2. zeile mit 3 Blöcken etc...Jetzt möchte ich halt die 4 Datenblöcke (Ich kenne die maximale Anzahl von Blöcken -> das Feld kann also fest initialiesiert werden) in ads Feld packen, für Zeile 1 also xy in array[0][0], das fasdf [0][1] etc...
das asd geht dann in array[1][0]
-
Hast du die Datei schon in dem beschriebenen Format eingelesen, oder geht das noch nicht?
-
GPC schrieb:
Hast du die Datei schon in dem beschriebenen Format eingelesen, oder geht das noch nicht?
Die liegt schon in nem Array vor, also 1Dim Array wo jedes Feldelement eine Zeile als inhalt hat (Typ STring)
Und ich kann jetzt nicht die Eingabemethode verändern, da es in dem datafile genau so vorliegt. (Also im "Blockformat")
-
Also praktisch so:
array[0] = xy:fasdf:afs:afsd
array[1] = asd:afdfgsg:asdff
array[n] = bla:bla:blubJetzt sollen Sie in folgendes Format, oder?
array[0][0] = xy
array[0][1] = fasdf
array[0][2] = ...array[1][0] = asd
array[1][1] = afdfgsg
array[1][2] = ...
-
richtig, genau so möchte ich das haben
-
einNunmehrGlücklicherGast schrieb:
richtig, genau so möchte ich das haben
Gut gut, hier ein Tipp, vllt. kriegst es ja dann hin:
Die Methode String.split zum splitten eines Strings lautet so:String arr[] = array[0].split(":");
Jetzt probier mal und meld dich halt wenn du nicht mehr weiterkommst
-
Ok, das funktioniert soweit richtig gut, auch wenn es mich etwas stört das split dann mein fest definiertes Array in der Länge verändert... aber da kann man nix machen
Dann hätte ich aber dennoch nen paar Fragen, nun ist es so das diese Blöcke nur teilweise nötige Infos enthalten, das heißt ich könnte immer auf Block xy verzichten... Ist das auch möglich zu implementieren mit so einer Methode, oder sollte ich besser die unnötigen sachen mitschleppen?
Achja, erstmal danke für die Funktion...
-
einGast schrieb:
Ok, das funktioniert soweit richtig gut, auch wenn es mich etwas stört das split dann mein fest definiertes Array in der Länge verändert... aber da kann man nix machen
Du kannst ja immer mit length abfragen wie groß es ist.
Dann hätte ich aber dennoch nen paar Fragen, nun ist es so das diese Blöcke nur teilweise nötige Infos enthalten, das heißt ich könnte immer auf Block xy verzichten... Ist das auch möglich zu implementieren mit so einer Methode, oder sollte ich besser die unnötigen sachen mitschleppen?
Prinzipiell ist es besser (wenn sich der Aufwand rentiert) die überflüssigen Daten wegzuschlagen, aber dazu kann ich erst mehr sagen, wenn ich Source sehe.
-
hm, soviel Code gibt es bis jetzt noch nicht, wie das Einlesen der Datei passiert interessiert dich ja sicher nicht...
Also:
public void ClientData (String[] datafile){ basicInfos("C://xz.txt"); [...]hier findet er herraus, wieviele "piloten" im File sind, und ab welcher Zeile diese im File stehen (ab wo der UserBereich ist) Pilot = new String[AnzahlPiloten][17]; //ich will eigentlich genau 17 daten haben for (int i = 0; i < AnzahlPiloten; i++){ Pilot[i] = Client[i].split(":"); } } }
So mache ich es momentan...
CPA504:905932:Joseph Barker RJAA:PILOT::30.09463:128.79450:37089:601:H/B744/R:480:VHHH:37000:RJAA:USA-W1:5242:::0:I:830:830:4:10:8:30:RJTT:SEL/DF-AF /PMDG-B744/step FL410/air-source.us/ /R/:OCEAN2C.ENVAR M750 MJE A1 ORGAN G597 VENUS SOUTH:22.308889:113.914722:35.766944:140.387778:::20051121082349:47:30.04:1017.27:
So, das ist eine "typische" Zeile, aus der ich nun nicht alle Infos brauche. (Welche sind erstmal uninteressant denke ich mal) (und es ist normal, das einige leer sind, das kommt auf den BlockTyp an)
-
Gut, wenn du die Infos u.U. später mal brauchst, dann lass sie drin, für's rausfiltern ist eh viel String-Manipulation nötig, das kostet. Probier halt mal aus was schneller und besser für dich ist.