7 Stimmen

Java-Schlittenfahrt zur vorherigen Zeile

\n - eine neue Zeile in Java ist, ist es möglich, von der aktuellen Position aus zur vorherigen Zeile zu gelangen? Ich möchte zum Beispiel ausdrucken: "this is for test".

System.out.println("this is for");

Wie kann ich nun "test" an die vorherige Zeile anhängen, da println den Wagen in die nächste Zeile verschiebt?

9voto

lepe Punkte 23471

Das funktioniert:

print "\033[F\r" + "New String"

Der Trick dabei ist: \033[F ist ein ANSI-Code (die von den meisten Terminals unterstützt wird), um eine Zeile zurückzugehen. Dann, \r ist es, am Anfang der Zeile zurückzugehen. Von dort aus können Sie die Zeile neu schreiben. Möglicherweise müssen Sie die Zeile mit Leerzeichen auffüllen, um sie korrekt zu löschen.

Ich glaube nicht, dass dies von der Standardkonsole in Windows unterstützt wird ( cmd ), aber es ist sehr wahrscheinlich, dass es in der Powershell funktionieren wird. In Linux (und sehr wahrscheinlich MacOS), sollte ohne jedes Problem funktionieren.

UPDATE

Nach 12 Jahren, seit ich diese Antwort geschrieben habe, scheint es \033[F funktioniert in meinen Tests nicht mehr. Vielleicht habe ich damals etwas anderes gemacht, an das ich mich jetzt nicht mehr erinnern kann. Die \r funktioniert zum Beispiel beim Zurücksetzen der Position ohne Probleme:

static void progress(int current, int total) {
    double pp = Math.round((current / total) * 10000) / 100;
    System.out.print "\rProgress: " + current + "/" + total + " (" + pp + "%) ";
}

die Sie in einer Schleife aufrufen können, um einen Fortschritt anzuzeigen.

4voto

madth3 Punkte 7151

Ich glaube nicht, dass Sie das können.

Normalerweise würden Sie verwenden System.out.print für den ersten Teil und verwenden Sie stattdessen eine println() または '\n' sobald Sie sicher sind, dass Ihre Leitung beendet ist.

1voto

SimonC Punkte 6482

Wenn Sie wirklich ein Zeichen zurückgehen" müssen, können Sie Folgendes tun System.out.print('\b') aber wenn Sie das nicht tun, sollten Sie die anderen Vorschläge zur Verwendung von System.out.print zuerst dann System.out.println da sie leichter zu verstehen ist.

Denken Sie auch daran, dass es offenbar einen Fehler in Eclipse gibt, der verhindert, dass dies wie vorgesehen funktioniert: Wie man die Rücktaste erreicht \b in der Eclipse-Konsole zu arbeiten? .

0voto

Sandeep Pathak Punkte 10238

Sie können verwenden System.out.print() stattdessen in der gleichen Zeile zu bleiben und test anzuhängen.

System.out.print("this is for ");
System.out.println("test"); //System.out.print("\n");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X