# Eclipses Console leeren



## Das Vi (15. Apr 2009)

Moin
Ich schreibe gerade an einem Programm, welches Telefonnummern verwaltet (für ein Praktikum).
Jedenfalls gibt es da eine Methode "dump", die den Inhalt des Arrays "nummern", welches die Nummern beinhaltet, in die Console printet.
Das problem ist, die dump methode wird bei jeder Reservierung von Nummern erneut aufgerufen, damit man immer sieht, ob alles klappt. Blos nach 2 - 3 Durchgängen ist die Console dann mit einigen zig-tausend Zeilen vollgemüllt...Gibt es eine Möglichkeit, die Console bei jedem Aufruf von dump erstmal zu leeren? 
Dankeschön!


----------



## Der Müde Joe (15. Apr 2009)

>die Console

cmd, bash, csh, ash ?

cmd: cls
bash: clear

wobei das ca 20 Enter entspricht


----------



## Das Vi (15. Apr 2009)

Eigentlich meine ich die Interne Console bei Eclipse wo über System.out.println() reingeschrieben wird ^^


----------



## Der Müde Joe (15. Apr 2009)

auf das X drücken... und man kann auch die Anzahl Einträge verringern


----------



## Das Vi (15. Apr 2009)

Super ich schließ einfach das Programm, das ergibt auch so viel Sinn^^
Ja begrenzen ist schlecht, weil ich halt teilweise bis zu 100000 oder mehr Zeilen benötige, für jede Zahl eine und wenn die 5-stellig sind, dann hab ich halt 100000 Zahlen.
Außerdem wollt ich ein Interface über die Console machen,  von daher ist es eh ganz böse, wenn die so voll wird.


----------



## Der Müde Joe (15. Apr 2009)

>auf das X drücken
>Super ich schließ einfach das Programm, 

Nein..nicht auch das rote Qudrat... (das x ist 3 mehr rechts)


----------



## Das Vi (15. Apr 2009)

Ja das Problem ist, das Programm läuft vollautomatisch und beendet sich nach der letzten reserve Operation, dh. manuell eingreifen ist grad ganz schlecht ^^

Gibt es denn keinen Befehl, den ich einfach am Anfang der Dump methode aufrufen kann, der die Console erstmal löscht?


----------



## The_S (15. Apr 2009)

nein, warum auch? Du hast nichts auf fremden Programm zu pfuschen. Wenn du schon auf fremden Ausgabemedien deine Sachen ausgibst, dann musst du damit Leben, dass es so ausgegeben wird, wie das Ausgabemedium es für richtig hält bzw. wie es konfiguriert ist.


----------



## Das Vi (15. Apr 2009)

Kann ich den ganzen Kram dann woanders ausgeben lassen?


----------



## The_S (15. Apr 2009)

Bau dir doch selbst ne kleine GUI. Könntest das z. B. in einer JTextArea ausgeben lassen. Oder für ganz gewitzte: Schön formatiert in nem JTextPane.


----------



## Ark (15. Apr 2009)

In einer Linux-Konsole kannst du auch die Escape-Sequenzen benutzen, um z.B. die Farbe zu ändern oder den Cursor zu positionieren. Das wird nur dann ein Problem, sobald du es unter Windows versuchst.

Ark


----------



## SlaterB (15. Apr 2009)

das ist ja etwa so, als wenn eine Webseite die Historie eines Browsers löschen will,
geht zum einen ganz gewiss in keiner Weise und warum sollte sich ein Java-Programm/ eine Webseite mit dieser völlig fremden Funktion befassen?

was stört dich denn an einer mit 'zig-tausend Zeilen vollgemüllt'en Konsole? willst du da hoch- und runterscrollen?
dann könntest du auch manuell auf das clear klicken, 
ok, im Nachhinein eher wenig hilfreich, dann ist ja alles weg 

ein sehr spezielles Feature wäre noch, die Cache-Größe der Konsole in Anzahl Zeichen genau so einzustellen,
dass nur ungefähr ein dump reinpasst, 
bei wechselnden Umfang der Ausgaben ist das aber gewiss nicht perfekt


----------



## maki (15. Apr 2009)

Wenn du wirklich deine GUI über eine "Konsole" realisieren möchtest solltest du dir das hier ansehen: SourceForge.net: Java Curses Library


----------



## Das Vi (15. Apr 2009)

Also ne GUI bauen ist mir zu schwer (ich bin seit 4 Tagen mit Java am werkeln...)
Das Ding ist: ich will die Nummern ja für verschiedene Leute reservieren, dh. ich muss mehrfach die reserve methode aufrufen. damit ich da überhaupt ne ausgabe bekomme, muss ich dann auch automatisch die dump methode jedes mal aufrufen. wenn ich jetzt 5 mal reserviere und gucken will, wer welche nummern hat, muss ich erstmal 400000 zeilen runterscrollen, bevor ich die aktuelle dump sehe...das ist einfach doof ^^


----------



## MiDniGG (15. Apr 2009)

Kannst Dir auch alles in ne Textfile ausgeben...


----------



## The_S (15. Apr 2009)

Das Vi hat gesagt.:


> Also ne GUI bauen ist mir zu schwer (ich bin seit 4 Tagen mit Java am werkeln...)



Dann musst du deinen Horizont wohl in eine der vorgeschalgenen Richtungen erweitern - oder du lebst damit, was du jetzt kannst  .


----------



## Das Vi (15. Apr 2009)

Naja den Horizont erweitern ist ja an sich kein Thema, ich hab allerdings nurnoch bis Freitag zeit, dann muss das Programm lauffähig sein und bis dahin schaff ich es niemals, mir anzueignen, eine GUI zu basteln (ich hab mir das ja schon angeguckt, aber das ist echt megakompliziert...)


----------



## The_S (15. Apr 2009)

Ich würde dir auch keine GUI Empfehlen. Viel zu komplex für nen 4-Tage-Programmierer  . Die Ausgabe in eine Datei weiterzuleiden wäre evtl. eine Möglichkeit. Solltest dann halt für jeden "dump" Aufruf eine neue Datei (z. B. mit nem Timestamp im Dateinamen) anlegen oder die alte Datei vorher leeren. Sowas sollte leichter zu bewerkstelligen sein, als ne GUI. Ansonsten musst du wohl (vorerst) mit der unübersichtlichen Ausgabe leben.


----------



## Gast2 (15. Apr 2009)

Naja du brauchst 3 Klassen JFrame,JPanel,JTextarea eventuell noch LayoutManager...
dann leiteste deine System.out.print stream in dein textarea rein und gut ist...
das textarea kannst dann leeren wie du willst...

EDIT: aber ich würde dir auch eher ne textdatei raten...


----------



## The_S (15. Apr 2009)

SirWayne hat gesagt.:


> Naja du brauchst 3 Klassen JFrame,JPanel,JTextarea eventuell noch LayoutManager...
> dann leiteste deine System.out.print stream in dein textarea rein und gut ist...
> das textarea kannst dann leeren wie du willst...



Ich halte es nicht für sinnvoll mit GUI-Programmierung anzufangen, bevor man nicht die Basics drauf hat (was definitiv länger als 4 Tage dauert).


----------



## Das Vi (15. Apr 2009)

> Die Ausgabe in eine Datei weiterzuleiden wäre evtl. eine Möglichkeit.



Wie sähe denn da in etwa die Syntax aus?


----------



## The_S (15. Apr 2009)

Kommt drauf an. Du hast 3 Möglichkeiten

1.) Die Konsolenausgabe direkt von der Konsole in eine Datei umleiden (hier nicht so sinnvoll und nicht zwingend von allen "Konsolen" unterstützt)
2.) Deine System.out.printlns löschen und durch "FileWriter"-Aufrufe ersetzen, die deinen Text in eine Datei speichern
3.) Deine System.out.printlns so lassen, wie sie sind, und stattdessen den Ausgabestream direkt in eine Datei umleiten.


----------



## Der Müde Joe (15. Apr 2009)

>Wie sähe denn da in etwa die Syntax aus? 


```
try {
        BufferedWriter out = new BufferedWriter(new FileWriter("out1.txt"));
        out.write("aString");
        out.close();
    } catch (IOException e) {
    }
```


----------



## Das Vi (15. Apr 2009)

Der Müde Joe hat gesagt.:


> >Wie sähe denn da in etwa die Syntax aus?
> 
> 
> ```
> ...



kannst du mir das ein wenig erklären, damit ich auch verstehe, was das genau macht?


----------



## Empire Phoenix (15. Apr 2009)

BufferedWriter out = new BufferedWriter(new FileWriter("out1.txt")); //neue datei erstellen im Ver5zeichnis wo dein Programm is, und das out Object zum einfacherern Schreiben haben.

 out.write("aString"); // naja es schreibt aString als text i die Datei

out.close(); //Beendet de Dateizugriff.


----------



## The_S (15. Apr 2009)

Und das "try-catch" außenrum, ist das (im andern Thread) angesprochene ExceptionHandling.


----------



## Das Vi (15. Apr 2009)

Das sieht gut aus...werd ich dann wohl so in der art machen.
merci


----------



## Saxony (15. Apr 2009)

Hiho,

ich habe dazu nur noch mal eine Anmerkung logischer Art:

Wieso gibt dein Programm nach jedem neuen Hinzufügen eines Eintrages in eine Liste diese Liste komplett aus?

Im Normalfall erscheint lediglich: "Neuer Eintrag wurde hinzugefügt"

Dem Nutzer selbst gibt man dann die Möglichkeit selbst zu entscheiden wann er die komplette Liste sehen will.

bye Saxony


----------

