Ich habe eine Datei im Format .dat. Hier ist ein BeispielJava Scanner Delimiter auf Werte von NextLine
|| = (N) = || 1 || 0,938 || --- || 0,5 || (****) || 0,5 || 0 || 0 || 0 || 0.700 || (p) = 2212, (n) = 2112 ||
|| = (\ Delta) = || 2 || 1.232 || 0,118 || 1.5 || (****) || 1.5 || 0 || 0 || 3 || 1.076 || (\ Delta^{++}) = 2224, (\ Delta^+) = 2214, (\ Delta^0) = 2114, (\ Delta^-) = 1114 ||
|| = (P_ {11} (1440)) = || 3 || 1.462 || 0,391 || 0,5 || (****) || 0,5 || 0 || 0 || 3 || 1.076 || 202212, 202112 ||
|| = (S_ {11} (1535)) = || 4 || 1.534 || 0.151 || 0,5 || (***) || 0,5 || 0 || 0 || 3 || 1.076 || 102212, 102112 ||
Ich versuche Scanner zu verwenden, um diese Datei zu lesen und die Zeile durch die "||" und dann in und ArrayList für die zukünftige Verarbeitung senden. Hier ist ein Beispiel von meinem Code, wo ich verwende, um den Begrenzer
String file = "data.dat";
Scanner s = null;
try {
s = new Scanner(new File(file)).useDelimiter("\\|\\|"); //here is the use of my delimiter
ArrayList<String> list = new ArrayList<String>();
while (s.hasNextLine()) { //notice I am using hasNextLine because each line must be unique to create the HashMap
list.add(s.nextLine());
}
s.close();
for (String string : list) { //Lets print out the values of the list
System.out.println(string);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Aber mein Ausgang noch Werte des Trennzeichens hat, das heißt hier die Ausgabe:
|| = (N) = || 1 || 0,938 || --- || 0,5 || (****) || 0,5 || 0 || 0 || 0 || 0.700 || (p) = 2212, (n) = 2112 ||
|| = (\ Delta) = || 2 || 1.232 || 0,118 || 1.5 || (****) || 1.5 || 0 || 0 || 3 || 1.076 || (\ Delta^{++}) = 2224, (\ Delta^+) = 2214, (\ Delta^0) = 2114, (\ Delta^-) = 1114 ||
|| = (P_ {11} (1440)) = || 3 || 1.462 || 0,391 || 0,5 || (****) || 0,5 || 0 || 0 || 3 || 1.076 || 202212, 202112 ||
|| = (S_ {11} (1535)) = || 4 || 1.534 || 0.151 || 0,5 || (***) || 0,5 || 0 || 0 || 3 || 1.076 || 102212, 102112 ||
Ich habe gesucht und keine Antwort gefunden, die geholfen hat. Ich bin auch eine Warnung über einen Sehen „Ressourcenleck:‚‘ist nie geschlossen“ mit der Linie
s = new Scanner(new File(file)).useDelimiter("\\|\\|");
, die verschwindet, wenn die Leitung in
s = new Scanner(new File(file));
s.useDelimiter("\\|\\|");
gebrochen Jede Hilfe sehr geschätzt wird.
Versuchen Sie, 'next()' anstelle von 'nextLine()' zu verwenden. Das liegt daran, dass eine Zeile nicht unbedingt mit '||' endet. – progyammer
@progy_rock nextLine ist wichtig, da jede Zeile ein Array von Werten ist, die ich später sortieren muss. Mit next() wird die Platzierung der Identität verloren. – mkunkel
Warum lesen Sie nicht jede Zeile mit Ihrem Scanner ohne Trennzeichen. Und dann verwenden Sie String.split in jeder Zeile mit Ihrem Delimiter? – ArcticLord