Java Nur die letzte Zahl des Arrays wird ausgegeben - jTextField - Ich verzweifle

P

pole96

Gast
Hey,

ich verzweifle. Schulaufgabe: Programm zur Verwaltung einer Lotterie. Habe ich. Das Programm generiert Randomzahlen, sortiert sie und gibt sie aus. Alles super!

Zusatzfunktion: Der User wird am Anfang nach 6 Zahlen gefragt. Diese werden im Array gespeichert. Funktioniert auch super. Wenn ich sie mir in der Konsole ausgeben lasse, ist alles in Ordnung. Will ich das aber in dem jTextField machen, funktioniert nichts. "append" funktioniert gar nicht, "setText" zeigt nur die letzte Zahl an. Wieso? Was ist falsch? Bitte, helft mir. Ich sitze schon lange an dem Programm und muss es heute um 19 Uhr abschicken, und das ist die letzte und einzige Sache, die nciht funktioniert.


Quellcode: http://pastebin.com/xV9FDxDt


Es muss jTextField bleiben. Will ich nämlich jTextAre nehmen, kommt ein Fehler mit dem jButton. Warum auch immer. Auch wenn ich ich das Feld entferne kommt alles durcheinander und ein jButton-Fehler. Also bleiben wir bitte bei jTextField. Nur wie gebe ich alle Zahlen aus? Wo liegt mein Fehler? Bitte helf mir :(
 
Ich bin jetzt auch kein Java-Crack, aber ich würde spontan ein String nehmen, alle Zahlen anfügen und diesen String dann im Textfeld ausgeben.


Code:
    String s="";
    //Ausgabe des Arrays!
    for (int h = 0; h < ezahlen.length; h++) {
      s+=ezahlen[h];
    } // end of for 
    b.setText(s);
 
Zuletzt bearbeitet:
Hi,
das Problem ist, dass du bei
Code:
for (int h = 0; h < ezahlen.length; h++) {
      b.setText(String.valueOf(ezahlen[h])+" ");
mit jedem Schleifendurchgang den kompletten Text durch den aktuellen Wert ersetzt. Du kannst jetzt entweder ,wie oben schon erwähnt, einen String basteln und ihn nach der Schleife ausgeben:
Code:
 String output="";
for (int h = 0; h < ezahlen.length; h++) {
     output+= ezahlen[h]+"\n";
}
b.setText(output);
oder Du baust die Schleife zu
Code:
for (int h = 0; h < ezahlen.length; h++) {
      b.setText(g.getText()+"\n"+String.valueOf(ezahlen[h])+" ");
um. (Pseudocode)
 
Zuletzt bearbeitet:
Code:
b.setText(b.getText()+"\n"+String.valueOf(ezahlen[h])+" ");
 
Zuletzt bearbeitet:
die methode setText() vom JTextField entfernt den gesamten Text im JTextField und zeigt dann den neuen übergeben an
Beim ersten Schleifendurchlauf wird also die erste Zahl in das TextField geschrieben, beim zweiten Durchlauf wird dann das TextField "geleert" und die zweite Zahl reingeschrieben. Nach dem letzen Durchlauf steht also nur die letzte Zahl im TextField.
 
XRayT1Raycer schrieb:
Ich bin jetzt auch kein Java-Crack, aber ich würde spontan ein String nehmen, alle Zahlen anfügen und diesen String dann im Textfeld ausgeben.


Code:
    String s="";
    //Ausgabe des Arrays!
    for (int h = 0; h < ezahlen.length; h++) {
      s+=ezahlen[h];
    } // end of for 
    b.setText(s);

Danke, das werde ich benutzen! ALlerdings muss ich auch erklären können, was was amcht. Also: Was heißt += ? Und String s="" ist doch nur ein Platzhalter, um das Array dann da reinzusetzen, oder?
 
s += "meinString" ist die Abkürzung für
s = s + "meinString"


s = "" initialisiert das String Objekt mit einem leeren String. Ansonsten würde += fehlschlagen da du ja quasi null + "meinString" versuchen würdest.
Kannst ja das = "" mal weglassen und schauen was passiert :)
 
Zuletzt bearbeitet:
Zurück
Oben