Hallo,
ich schreibe einen Converter komme aber an einer bestimmten Stelle nicht ganz weiter. Das CSV File das ich bearbeite, ist etwas sonderbar. Die Headerinformationen gibt es nicht, jedoch stehen am Anfang der Zeile Node informationen. Die nehme ich dann einfach als Headerersatz. Erstmal das Test Filevon allen Klassen die ich geschrieben habe.
1.In dieser Klasse lese ich nur ein.
2. Durch die Beschaffenheit der CSV, muss ich irgendwie eine Künstliche Struktur bauen damit ich weis wo ich später bin, wenn ich das File baue. Da ich einen Scanner benutze, wird mir immer Zeilenweise der Inhalt geliefert. Da ich wie anfänglich erwähnt, das erste Wort also das Node für jedes fällt übernehme, Nummeriere ich jedes Wort durch und Filtere Leere stellen heraus.
3. Soweit gibt es keine Probleme und alles funktioniert so wie es soll. Jetzt möchte ich die Datei bauen und bekomme eine für mich nicht nachvollziehbare Ausgabe. Erstmal der Code:
Das ist die Ausgabe:
Sowiet stimmt und passt das alles. ich schaffe es jedoch nicht den ersten Eintrag mit null weg zu bekommen. Durch diesen Eintrag, ist alles im 1 nach unten verrutscht in meiner Finalen Ausgabe, die eigentlich so aussehen soll:
Immer wenn ich Speicher 2 im Kontruktor aufrufe, nachdem ich ihn in der Klasse befüllt habe, habe ich diesen Fehler. Ich habe auch eine zusätzliche Methode geschrieben, der ich Speicher 2 direkt übergebe und dann eine Ausgabe mache, um zu sehen ob der null Eintrag aus der ersten Zeile dann weg ist. Nur wenn ich in der Methode (input2) ein System out mache, ist das null nicht da. Deshalb habe ich auch versucht die Klasse mit mit return Type String zu machen und dann aufzurufen. Jedoch auch ohne erfolg. Da ich nicht nachvollziehen kann, warum dieser Eintrag überhaupt erzeugt wird, wäre ich um jeden Tipp und Erklärung dankbar.
ich schreibe einen Converter komme aber an einer bestimmten Stelle nicht ganz weiter. Das CSV File das ich bearbeite, ist etwas sonderbar. Die Headerinformationen gibt es nicht, jedoch stehen am Anfang der Zeile Node informationen. Die nehme ich dann einfach als Headerersatz. Erstmal das Test Filevon allen Klassen die ich geschrieben habe.
Code:
Das;ist;ein;;Test Warum;800;diese;das;nich so funktioniert;1000;;;;
test1;test3;;test1;test1;test1;test1;test1;test1;;;;;test1;test1;test1;test1;
test14;test1300;
1.In dieser Klasse lese ich nur ein.
Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class DateiScanner {
public static void ladeDatei (String datName) {
File file = new File(datName);
if (!file.canRead() || !file.isFile())
System.exit(0);
Scanner scan = null;
try {
scan = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (scan.hasNext()) {
Filter filter = new Filter(scan.nextLine());
}//while
scan.close();
}// void ladeDatei
}//class
2. Durch die Beschaffenheit der CSV, muss ich irgendwie eine Künstliche Struktur bauen damit ich weis wo ich später bin, wenn ich das File baue. Da ich einen Scanner benutze, wird mir immer Zeilenweise der Inhalt geliefert. Da ich wie anfänglich erwähnt, das erste Wort also das Node für jedes fällt übernehme, Nummeriere ich jedes Wort durch und Filtere Leere stellen heraus.
Java:
[B]import[/B] java.util.Set;
public class Filter {
private String zeile;
int zeilenZaehler = 0;
public Filter(String zeile) {
this.zeile = zeile;
this.ZeilenFilter();
}
public String getZeile() {
return zeile;
}//getZeile()
public void setZeile(String zeile) {
this.zeile = zeile;
}//setZeile(String zeile)
public void ZeilenFilter() {
String Wort ="";
for(int i = 0; i< this.getZeile().length();i++) {
if(this.getZeile().charAt(i) != ';' && this.getZeile().toString() != null) {
char extra = this.getZeile().charAt(i);
Wort += extra;
}else {
StructureBuilder2 structure = new StructureBuilder2(zeilenZaehler+Wort);
Wort = "";
zeilenZaehler++;
}//else
}//void ZeilenFilter
}//ZeilenFilter()
}//class
3. Soweit gibt es keine Probleme und alles funktioniert so wie es soll. Jetzt möchte ich die Datei bauen und bekomme eine für mich nicht nachvollziehbare Ausgabe. Erstmal der Code:
Java:
package convert;
public class StructureBuilder2 {
private String wort;
public static String Speicher;
public static String Speicher2;
public String getWort() {
return wort;
}
public void setWort(String wort) {
this.wort = wort;
}
public StructureBuilder2(String word) {
this.wort = word;
this.input();
System.out.println(Speicher);
//this.input2();
//System.out.println(Speicher2);
}//StructureBuilder(String word)
public void input() {
//Speicher = "";
StringBuilder Node = new StringBuilder(this.getWort().toString());
if(Node.charAt(0) == '0' && Node.toString() != null) {
this.Speicher = Node.deleteCharAt(0).toString();
//this.BuildHeader(Speicher);
}//if
}
public void input2() {
StringBuilder Node2 = new StringBuilder(this.getWort());
if (Node2.charAt(0) != '0')
this.Speicher2 = Node2.deleteCharAt(0).toString();
}
}//class
Das ist die Ausgabe:
Code:
null
ist
ein
Test Warum
800
diese
das
nich so funktioniert
1000
0
1
2
2
test3
test1
test1
test1
test1
test1
test1
0
1
2
3test1
4test1
5test1
6test1
6test1
test1300
Sowiet stimmt und passt das alles. ich schaffe es jedoch nicht den ersten Eintrag mit null weg zu bekommen. Durch diesen Eintrag, ist alles im 1 nach unten verrutscht in meiner Finalen Ausgabe, die eigentlich so aussehen soll:
Code:
<Das>
<Das>ist</Das>
<Das>ein</Das>
<Das>Test</Das
.
.
.
</Das>
<test1>
<test1>test3</test1>
<test1>test1</test1>
.
.
.
</test1>
<test14>
<test14>test1300</test14>
</test14>
Immer wenn ich Speicher 2 im Kontruktor aufrufe, nachdem ich ihn in der Klasse befüllt habe, habe ich diesen Fehler. Ich habe auch eine zusätzliche Methode geschrieben, der ich Speicher 2 direkt übergebe und dann eine Ausgabe mache, um zu sehen ob der null Eintrag aus der ersten Zeile dann weg ist. Nur wenn ich in der Methode (input2) ein System out mache, ist das null nicht da. Deshalb habe ich auch versucht die Klasse mit mit return Type String zu machen und dann aufzurufen. Jedoch auch ohne erfolg. Da ich nicht nachvollziehen kann, warum dieser Eintrag überhaupt erzeugt wird, wäre ich um jeden Tipp und Erklärung dankbar.
Zuletzt bearbeitet: