# for Zähl schleife hilfe benötigt



## AlexD (29. Dez 2009)

Hallo, 

Ich bin neu in diesem Forum und bei Java. Trotz Google suche und Foren suche konnte ich leider nichts zu meiner Frage finden. 

Ich denke die Lösung ist sicher für jemand der sich etwas besser auskennt als ich ein Witz. Trotzdem komme ich leider nicht auf die Lösung. 


Ich soll ein Programm schreiben das von 1 bis 100 zählt die zahlen sollen nebeneinander stehen und sollen alle durch ein Komma getrennt werden. vor die 1 und nach der 100 darf kein Komma stehen. 

mein Code sieht so aus.

```
public class Java03_32 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i;
		
		for (i=1; i <=99; i++)
			System.out.print(i + ",");
			System.out.print("100");
	}

}
```
Das Ergebnis ist natürlich richtig aber es entspricht glaub ich nicht der Aufgabe. 

Wie kann ich in der Schleife bis 100 zählen lassen ohne das ein Komma nach der 100 steht?


vielen Dank schonmal im Vorraus für die Hilfe. 


LG 

AlexD


----------



## eRaaaa (29. Dez 2009)

mhm, also ich find`s so schon okay 

Ansonsten fragst du halt mit einer if-Abfrage ab, ob i ==100 ist

z.B.:

```
for (i = 1; i <= 100; i++) {
	    if (i != 100) {
		System.out.print(i + ",");
	    } else {
		System.out.print(i);
	    }
	}
```


----------



## AlexD (29. Dez 2009)

Vielen Dank für die Antwort.


----------



## SlaterB (29. Dez 2009)

aber besser nicht die 100 2x schreiben, lieber nur eine Variable
int n = 100;
definieren und die dann mehrfach verwenden


----------



## Painii (29. Dez 2009)

Inhaltlich ist deine Schleife wohl richtig, aber zur Übersichtlichkeit:
Was in der Schleife stehst klammerst du am besten mit [c]{ }[/c].
Dann siehst du besser was in der Schleife steht und was nicht. (Ich auf den allerersten Blick gedacht er würde in jedem Schleifendurchlauf die 100 ausgeben)

Aber wie gesagt, sie macht was in der Aufgabenstellung steht, der Rest ist nur Form


----------



## Landei (29. Dez 2009)

```
for (int i=1; i <=100; i++) {
  System.out.print((i == 1 ? "" : ",")  + i);
}
```


----------



## Nooby88 (29. Dez 2009)

AlexD hat gesagt.:


> ```
> public class Java03_32 {
> 
> public static void main(String[] args) {
> ...



Das Ergebnis ist leider so doch nicht richtig, da bei jedem Schleifendurchgang die 100 ausgegeben wird.


```
public class EinsBisHundert {

    public static void main(String[] args) {
						
        for(int i = 1; i < 101; i++) {

            System.out.print(i);

            if(i != 100) {
                System.out.print(", ");
            }
        }
    }
}
```


----------



## eRaaaa (29. Dez 2009)

Nein, es wird nur einmal die 100 gedruckt und zwar am Ende. Da steht ja eig.:

```
for (i=1; i <=99; i++){
	     System.out.print(i + ",");
	 }
	 System.out.print("100");
```

Deshalb auch lieber immer Klammern setzen  (oder zumindestens richtig formatieren ;D )


----------



## SlaterB (29. Dez 2009)

> Das Ergebnis ist leider so doch nicht richtig, da bei jedem Schleifendurchgang die 100 ausgegeben wird.

 System.out.print("100");
gehört nicht zur Schleife, die Einrückung ist egal, ohne Klammern zählt nur der nächste Befehl zur Schleife

aber die Version ist doch eh nicht mehr aktuell


----------



## Nooby88 (29. Dez 2009)

achso, ja stimmt ^^

wenn schon ohne klammern dann so ^^


```
for (i=1; i <=99; i++) System.out.print(i + ",");

System.out.print("100");
```


----------



## chrisu_95 (20. Nov 2010)

int i=0;

    for(i=0;i<=20;i=i+1){
    	i=i+i;
    }
    System.out.println(summe);
    }
}



Wie kann ich das angeben wenn ich die Zahlen von 0 bis 20 addiert haben möchte.Habe echt keinen Plan.
Mfg. Chrisu
Bitte um schnelle antwort(haben am dienstag programmiertest)!
XD


----------



## Marcinek (20. Nov 2010)

Naja da haste aber noch was vor.

Versuch doch mal logisch dein Programm zu betrachten.

Du veränderst deine Laufvariable.

Und summe wird nie geändert und plötzlich soll das Ergebnis da drin stehen...

Aufsummieren kann man auch schneller

summe = n*(n-1) /2


----------



## Landei (20. Nov 2010)

chrisu_95 hat gesagt.:


> Wie kann ich das angeben wenn ich die Zahlen von 0 bis 20 addiert haben möchte.Habe echt keinen Plan.
> Mfg. Chrisu
> Bitte um schnelle antwort(haben am dienstag programmiertest)!
> XD



Also die Zählvariable (oder "counter") ist - wie der Name schon sagt - dazu da, um zu _zählen_. Normalerweise verändert man sie innerhalb des Schleifenkörpers nicht, und sie sollte im Normalfall auch nicht außerhalb der Schleife sichtbar sein. Logische Schlussfolgerung: Wir brauchen eine _zweite _Variable, in der die laufende Summe gespeichert wird:


```
int sum = 0; 
for(int i =0; i <= 20; i = i+1) {
   sum = ??? was muss hier wohl hin ???
}
//jetzt steht unser Ergebnis in sum
```


----------

