Strings einlesen mittels Scanner

Allysia

Grünschnabel
Nabend @all,

Ich versuche gerade mit nem Scanner einen String einzulesen.
Das Problem sind jedoch die Delimiter, da die methode next() der Scannerklasse immer nur bis zu ihnen ließt.
Da meine Eingaben jedoch auch Leerzeichen enthalten sollen und die komplette Eingabe bis zum Drücken von Enter in einen String soll habe ich mir folgenden Code überlegt:

Code:
public static String getString() {
    Scanner input = new Scanner(System.in);
    String tmp = "";
    while (input.hasNext()) {
        tmp = tmp + input.next();
    }
    return tmp;

leider funktioniert obiger code aber nicht, und ich hab ne Endlosschleife (bzw. Dauereingabe)
(man verzeihe mir den fehlenden Stringbuilder :) )


natürlich würde das hier unten funktionieren , aber mit Scanner müsste sowas doch auch möglich sein...
Code:
public static String getString() throws IOException {
    BufferedReader bufread = new BufferedReader(new InputStreamReader(System.in));
    return bufread.readLine();
}

mfg Allys
 
Ein kleiner Tip:
den String tmp mit sich selbst zu "erweitern"(+) ist eine schlechte Idee aus Performancegründen.
Da hierbei immer wieder ein neuer String hergestellt werden muss. Hierbei empfiehlt sich ein StringBuilder. (append)

Leider kann ich dir sonst nicht weiterhelfen
 
(man verzeihe mir den fehlenden Stringbuilder :) )

Mit dem Scanner mache ich in der Regel nichts, daher kann ich dazu auch nix sagen. Ich habs selbst probiert und der haut die Leerzeichen immer weg, wodurch die Texte dann sehr merkwürdig aussehen können ^^

Damit es keine Endlosschleife gibt, könntest du die Schleife etwas umbauen:
Code:
while (input.hasNext()) {
    String inputTmp = input.next();
    if(inputTmp.equalsIgnoreCase("exit")) break;
    tmp = tmp + inputTmp;
}
 
Java:
	public static String getString() {
	    Scanner input = new Scanner(System.in);
	    return input.nextLine();
	}

und so wird aus nem 5 Zeiler mit Schleife nen 2 Zeiler :)

Danke für eure Kommentare, mit nextLine() benutzt er Enter bzw \n als Delimiter
 

Neue Beiträge

Zurück