Textausgabe in einer For-Schleife

sk1988

Mitglied
Hallo zusammen,
wahrscheinlich eine ganz simple Frage....
wie bekomme ich es hin das er die Zahlen von 1-50 mir im Programm anzeigt ohne sie immer zu überschreiben, im Moment zeigt er mir nur den letzten Wert der Schleife an, es soll aber 1,2,3,4,5 und so weiter angezeigt werden.

Java:
    public static void main(String[] args) {
    
        int i;
        
        for (i = 0; i <= 49; i++);
        System.out.print(""+ i + ",");
                
    }

}

Ich hatte schon etwas gegoogelt, aber ich bin hier komplett überfragt.
Bitte nicht lachen 🙂, ich habe bis jetzt nur VBA Grundkenntnisse und bei Java bin ich ganz frisch.
Vielen Dank schon einmal!
 
weil du hier eine leere For schleife hast die einfach nur das i hoch zählt bis 50 und dann fertig ist

dann gibst du i aus was 50 ist

du musst schon das system out println in die Forschleife rein packen mit klammern
Java:
for (i = 0; i <= 49; i++){
        System.out.print(""+ i + ",");
}

das problem bei dir ist dass du eine "leere schleife machst" dh deine For schleife hat keinen inhalt wegen dem Semikolon

Code:
        for (i = 0; i <= 49; i++); <= wegen dem hier
würdest du das semikolon weglassen hättest du eine "einzeilige forschleife dh nur die nächste zeile wird in der Forschleife rein geholt zb
Code:
for (i = 0; i <= 49; i++)
        System.out.print(""+ i + ",");
aber ohne klammern geht halt nur die leere for schleife oder die einzeilige forschleife

zu empfehlen am anfang ist es aber mit klammern zu arbeiten was ich als erstes als Lösung gezeigt habe
 
Oh nein, also hing es wirklich nur an den " ; "
Daran muss ich mich erstmal gewöhnen.
Ich hatte schon 3 Stunden an einer simplen verschachtelten IF-Anweisung gehangen, weil ich ein " ; " gesetzt habe wo keiner hätte sein dürfen.

Jetzt kann ich beruhig schlafen gehen.

Vielen Dank und noch ein schönen Abend / Nacht!
 
du kannst mal googlen nach "java kontroll strukturen" dann findest du die syntax für ifs fors und while loops dann findest du das zeug dazu
 
was müsste ich den machen das nach der letzten Zahl der 50 kein "Komma" gesetzt wird, müsste ich in der For-Schleife eine If-Anweisung setzen? oder denke ich jetzt zu kompliziert?

Java:
    public static void main(String[] args) {
    

        int i;
        
        for (i = 1; i <= 50; i++) {
            
            
        System.out.print(""+ i + ","); }
        

        
        
    }
            
}
 
Ich würde spontan ein If rein bauen weil es die einfachste Lösung ist

es gibt viele Möglichkeiten das zu lösen ( das ist pseudo code dh so funktionierts nicht ... du musst das noch ändern )
1.
Java:
int i = 1;
println(i)
for(i=i+1;....){
    println(","+i);
}
du printelst zuerst die erste zahl ohne komma und jede folgende zahl hat ein Vorgestelltes komma
2.
Code:
int i;

for( i=1; i < 50 ....){
    println(i+",");
}
println((i+1));
3.
mit if


da gibts viele möglichkeiten das zu erledigen
 
Dass es viele Möglichkeiten gibt, wurde ja schon gesagt.

Meine bevorzugte Methode ist, einen Stringbuilder zu verwenden.
Java:
var strB = new StringBuilder();
for (int i = 0; i < max; i++) {
    strB.append(...).append(',');
}
if (!strB.isEmpty()) {
    strB.setLength(strb.length()-1);
}
System.out.println(strB.toString);

Auf die Weise gibt's auch nur ein System.out.println().

Da kann natürlich noch ein Formatter über den Builder gelegt werden, als besser lesbarer Ersatz für die appends.

Java:
var strB = new StringBuilder();
var form = new Formatter(strB);
for (int i = 0; i < max; i++) {
    form.format("%s,", text);
}
if (!strB.isEmpty()) {
    strB.setLength(strb.length()-1);
}
System.out.println(strB.toString);
 
Auf die Weise gibt's auch nur ein System.out.println().
Ja, das ist ein Punkt, den ich auch für nicht unwichtig halte - alleine schon um Berechnung und Ausgabe zu trennen.

Bei Lösungen bevorzuge ich aber immer Lösungen, die nicht mehr machen als notwendig. Also erst etwas zu viel machen um dann etwas weg zu nehmen - das gefällt mir nicht.

Daher wäre meine bevorzugte Lösung etwas wie:
Java:
StringBuilder result= new StringBuilder();
if (max >= 1) {
    result.append(1);
}
for (int i = 2; i <= max; i++) {
    result
         .append(i)
         .append(',');
}
System.out.println(result.toString());

Aber das sind absolute Feinheiten und da würde ich sagen: Über Geschmack kann man nicht streiten 🙂
 

Zurück
Oben