Wie zu beheben Zeilenende Lesen mit dem Scanner-Klasse in Java
Ich bin nicht ein erfahrener Java-Programmierer und ich bin versucht zu schreiben einen text in eine Datei schreiben und dann Lesen Sie es mit Scanner. Ich weiß, es gibt viele Möglichkeiten, dies zu tun, aber ich will schreiben-Datensätze einer Datei mit Trennzeichen, dann Lesen Sie die Stücke.
Das problem ist so klein. Wenn ich mir die Ausgabe einigen drucken nicht gesehen(siehe unten). Ich meine die Fett dargestellte Zeile in der Ausgabe, wird nur geschrieben "Scanner". Ich wäre dankbar, wenn jemand beantworten kann, warum "String: " nicht gesehen. (Bitte beantworten Sie nur, was ich Fragen)
Konnte ich nicht verstehen, wenn es ein einfacher Druck-problem oder ein Zeilenende-problem mit "\r\n".
Hier ist der code:
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner;
public class Tmp { public static void main(String args[]) throws IOException { int i; boolean b; String str; FileWriter fout = new FileWriter("test.txt"); fout.write("Testing|10|true|two|false\r\n"); fout.write("Scanner|12|one|true|"); fout.close(); FileReader fin = new FileReader("Test.txt"); Scanner src = new Scanner(fin).useDelimiter("[|\\*]"); while (src.hasNext()) { if (src.hasNextInt()) { i = src.nextInt(); System.out.println("int: " + i); } else if (src.hasNextBoolean()) { b = src.nextBoolean(); System.out.println("boolean: " + b); } else { str = src.next(); System.out.println("String: " + str); } } fin.close(); } }
Hier ist die Ausgabe:
String: Testing int: 10 boolean: true String: two String: false Scanner int: 12 String: one boolean: true
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Sie das schreiben aus der Zeichenfolge "String:" und dann schreiben steuerzeichen \r oder carriage return, und dann schreiben Sie den Inhalt.
Folgende version sollte funktionieren ein bisschen besser für Sie:
Wirklich sehen, was ich bin reden über das \r ist, sollten Sie Ihre ursprünglichen Programm, so dass der print-code sieht wie folgt aus:
Sollten Sie die Ausgabe:
Du bist nicht die Einstellung Ihres Trennzeichen Recht;
[|\\*]
ist ein Charakter-Klasse, bestehend aus 2 Zeichen,|
,*
.Sie schien gefunden zu haben, dass
"[|\\n]"
"funktioniert", aber das eigentlich hinterlässt einen trailing\r
am Ende einige Jetons.Zufällig, Sie sollten sich bis
PrintWriter
; es hatprintln
Methoden, verwendet das system die Eigenschaftline.separator
. Es ist im Grunde, wasSystem.out
ist-ein.