Mein erstes Posting ...
Ich bitte um Hilfe bei der Ausgabe der ungerade bzw. geraden Zahlen bis 100 im
jLabel1. Mein Problem ist dass nur die letzte Zahl ausgegeben wird, ich jedoch gerne
alle fortlaufenden gerade bzw. ungeraden Zahlen im jLabel1 ausgeben möchte.
Vorab schon mal Danke!
Java:
package javaswingapplication13;/**
*
* @author winzik77
*/publicclassNewJFrameextends javax.swing.JFrame{/**
* Creates new form NewJFrame
*/publicNewJFrame(){initComponents();}...privatevoidjButton1ActionPerformed(java.awt.event.ActionEvent evt){int gerade =0;while(gerade<=100){String stringgerade =String.valueOf(gerade);
jLabel1.setText(stringgerade);
gerade +=2;}}privatevoidjButton2ActionPerformed(java.awt.event.ActionEvent evt){int ungerade =1;while(ungerade<=100){String stringungerade =String.valueOf(ungerade);
jLabel1.setText(stringungerade);
ungerade = ungerade+2;}}privatevoidjButton3ActionPerformed(java.awt.event.ActionEvent evt){
jLabel1.setText("");// TODO add your handling code here:}
ich glaube du solltest es evtl mal mit einer for schleife versuchen, wenn du eine ausgabe like
Java:
012345//oder0123456789
haben möchtest
Java:
int gerade =0;while(gerade<=100){String stringgerade =String.valueOf(gerade);
jLabel1.setText(stringgerade);
gerade +=2;}//Deine While wird beim klick durchlaufen und setzt dein label auf den letzen wert, in dem fall 100
Bei der 1. Variante wird einfach der neue Text in das jlabel geschrieben, beim 2. Mal wird der alte text genommen, und an ihn der neue Text hintendrann gehängt
ja korrekt. die schleife hat in der konsolen Variante einwandfrei funktioniert. das Problem ist erst durch die string konvertierung fürs jlabel aufgetaucht.
wie mein vorposter schon geschrieben hat , wird der String in deinem JLabel solange überschrieben wie die Abbruchbedingung noch nicht erreicht ist , demnach setzt der dein String nur auf den letzten Wert
hast du das schonmal versucht ?
Java:
publicclassTest{publicstaticvoidmain(String[]args){String a="";ArrayList<String> list=newArrayList<String>();for(int i =0; i <=100; i+=2)// zählt je durchlauf i+2 und fügt das ergebnis der list hinzu{String f =String.valueOf(i);
list.add(f);}for(String b : list)// iteriert über alle elemente in list und fügt sie + a zusammen{
a += b;}System.out.println(a);// hier dann setText anstelle von Sysout.}}//Ausgabe des strings ist dann 02468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100
Der String "a" lässt sich dann auch nach vorliebe formatiert ausgeben , insofern du das möchtest "a" wäre quasi dann dein String "stringGerade"
Danke, ich habe mit Deiner Vorgabe die Ausgabe korrekt hinbekommen.
Gibt es noch eine Möglichkeit die Ausgabe vertikal anzuordnen oder durch ',' zu trennen?
Ich habe verschiedene Sachen probiert (html, %n, \n, ...) hat leider nichts funktioniert.:autsch:
Danke, lg winzik
das hier kann nur einmal ein "," ausgeben, da du ja die setText methode auserhalb der for-schleife aufrufst, sonst müsste sich ja dein JLabel die ganze zeit aktualisieren um eine ähnliche ausgabe hinzubekommen :idea:
wie gesagt wenn du z.b noch ein komma hinter jeder zahl haben willst realisiere diesen schritt gleich in der for schleife und speicher dieses mit
Java:
for(String a : list){
ungerade += a +","+"\n";//<<- nach jeder zahl wird durch komma getrennt und es folgt ein Zeilenumbruch}