Java Schleifen Problem

ellegance

Mitglied
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

Top Contributor
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;
 
Zuletzt bearbeitet:

ellegance

Mitglied
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

Top Contributor
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:D

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:

Code:
6792691744573800470287851701859191869473079153788737947175048348000566996201075565883634067117697871971951788620081790897833975117872915098411594472966982434784667390565661825534997069369223181107508369736925738136722506332041830092581043853551806637709746119945430430888089110650345057107426224932943371803396277440074116196619232116926339614128696341204992520108400256503261237155571285404597604616847357620275685214063161701206402885960985439459427543149541465184526566990650415696495063334653541359881356653476671738544347224622640956514758437414180328510235242923530479206058818535424000000000000000000000000000000000000000000000000000000000000000000000000000000
 
Zuletzt bearbeitet:

ellegance

Mitglied
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 :)
 

turtle

Top Contributor
nein, es berechnet
Java:
System.out.println(1 * 2 * 3 * +4 * 5 * 6 * 7 * 8 * 9 * 10*...*321);
 

Neue Themen


Oben