Java, Scanner copy paste aber mehrere Zeilen?

3 Antworten

Dann willst du keinen Scanner vermutlich, denn der ist eben dafür gedacht, das gestückelt auszugeben.

Evtl. ist "Scanner.tokens()" was du suchst. Oder aber du willst eigentlich den darunterliegenden InputStream haben (dann kannst du dir die Erstellung des Scanners sparen und eben stattdessen den Inputstream direkt anderweitig verwenden).

Wenn du mit dem Scanner auf irgendwas zugreifst, was ein Ende hat (also z.B. eine Datei oder ein String, aber nicht die Konsole), kannst du mit "useDelimier()" einstellen, wie weit er bei "next()" lesen soll.

Z.B.:

String mehrzeiligerText = """
		Hallo,
		
		ich bin ein mehrzeiliger Text.
		Ich will in einem Stück gelesen werden.
		
		Bitte alles auf einmal.
		Danke.""";
		
Scanner scanner = new Scanner(mehrzeiligerText);
scanner.useDelimiter("\\Z");
System.out.println(scanner.next());

Befasse dich mit den Grundlagen der Programmierung, da scheint es stark zu hapern.

Ein einfacher (eigentlich n-facher...) Loop würde hier abhilfe schaffen.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

CloudBeta 
Beitragsersteller
 30.03.2022, 13:28

Aber ich weis ja ncht wie viele zeilen muss ich dann mit hasNext() arbeiten?

0
ZaoDaDong  30.03.2022, 13:29
@CloudBeta

du kannst eine Kopfgesteuerte Schleife nutzen.

while (...hasNext())

do

{
... }

...

0
CloudBeta 
Beitragsersteller
 30.03.2022, 13:30
@ZaoDaDong

Stimmt das mit dem do hab ich gestern erst gelernt

0
ZaoDaDong  30.03.2022, 13:36
@CloudBeta

das do ist hier in Java gar nicht nötig, sorry.
Das braucht es nur bei fußgesteuerten While-Schleifen.

Also

do
{
...
}
while (...scanner.hasNext());

ginge auch, wie du willst.

0
CloudBeta 
Beitragsersteller
 30.03.2022, 14:47
@ZaoDaDong

Hey... ich schaffe das nicht xD auch wenn ich nach jeder zeile if !hasnext break mache

while (scanner.hasNext()) {
    System.out.println("Hallo");
    if (!scanner.hasNextLine()) break;
    conText = conText.concat(scanner.nextLine());
    if (!scanner.hasNextLine()) break;
}
0