# Java Schleifen Problem



## ellegance (23. Jul 2014)

Hallo, ich habe ein Problem bei dieser Aufgabe.

In den nachfolgenden Teilaufgaben sollen Sie zu einem gegebenen Java-Programmstück einen äquivalenten Code angeben, der sich exakt gleich verhält.

b) Ersetzen Sie das folgende Programmstück durch eine while-Schleife.

     int i=0; res=1;
   for(i=2; i<=321; i++){
     res*=i;
   }


Schreiben Sie Ihre Antworten in das Freitextfeld. Sie brauchen keine main-Methode o.ä. zu implementieren. Einfach nur die vorgegebenen  Programmstücke durch die enstporechenden  Schleifen ersetzen.

Meine Frage: 

 Bevor ich es ersetzen wollte, dachte ich mir ich schreibe es bei eclipse auf umzugucken was es eigentlich macht. so habe ich es bei a) gemacht und dann hat es super geklappt.
Bei dieser Aufgabe habe ich das Problem, dass eclipse mir schon ein Fehler zeigt.

public class clasres {
	public static void main(String args[]){
		int i=0; res=1;
		   for(i=2; i<=321; i++){
		     res*=i;
		   }
	}
}

das ist ja das von oben plus halt public static void main(String args[]){
als Fehler kommt zweimal: " res cannot be resolved to a variable "
Kann mir jmd. dort weiterhelfen, wie ich erstmal normal das Programm laufen lassen kann bevor ich es ersetze?
und was bedeutet eigentlich res? bzw. res*


LG


----------



## turtle (23. Jul 2014)

int i = 0*,* res = 1;

Ich VERMUTE res soll die Abkürzung für resultat sein und res *= i; ist Kurzschreibweise für res = res*i;


----------



## ellegance (23. Jul 2014)

Danke für deine schnelle Antwort.
Nun habe ich:


public class clasres {
	public static void main(String args[]){
		int i=0, res=1;
		   for(i=2; i<=321; i++){
		     res*=i;
		   }
	}
}

Nun zeigt der mir: "The value of the local variable res is not used"
wenn ich es ausführe kommt nichts. 
Ich glaube, dass ist nicht normal oder?



MfG


----------



## turtle (23. Jul 2014)

Doch, ist es...
du berechnest zwar in einer schleife immer wieder neu res-Werte, machst danach aber nichts mehr damit. Daher die Warnung und natürlich kommt da keine Ausgabe, weil du..keine Ausgabe machst

PS: Meine Vermutung ist, das dieses Programm zeigen soll, das Integer-Zahlen begrenzt sind. Die maximale Integer-Zahl ist 2147483647 aber deine Berechnung ergibt als Resultat:


```
6792691744573800470287851701859191869473079153788737947175048348000566996201075565883634067117697871971951788620081790897833975117872915098411594472966982434784667390565661825534997069369223181107508369736925738136722506332041830092581043853551806637709746119945430430888089110650345057107426224932943371803396277440074116196619232116926339614128696341204992520108400256503261237155571285404597604616847357620275685214063161701206402885960985439459427543149541465184526566990650415696495063334653541359881356653476671738544347224622640956514758437414180328510235242923530479206058818535424000000000000000000000000000000000000000000000000000000000000000000000000000000
```


----------



## ellegance (23. Jul 2014)

haha ja war mein Fehler danke.
habe da unter einfach noch system.out.println(i); geschrieben dann hat der mir halt alle Zahlen von 2 bis 321 aufgezäht. danke


----------



## ellegance (23. Jul 2014)

hmm dann habe ich es glaube ganz falsch verstanden :S dachte das Programm schreibt nur die Zahlen von 2-321 auf


----------



## turtle (23. Jul 2014)

nein, es berechnet

```
System.out.println(1 * 2 * 3 * +4 * 5 * 6 * 7 * 8 * 9 * 10*...*321);
```


----------



## ellegance (24. Jul 2014)

ok danke


----------

